c++ - 作为函数参数传递的 vector 初始值设定项列表

标签 c++ c++11 vector initialization

我有一个接收 std::vector<int> 的函数因此:

void foo(std::vector<int>);

我想反复调用foo()带有动态生成的小 vector 。我试图使用初始化列表动态创建一个新 vector ,但它似乎分配了一个大小为 n 的 vector ,而不是对其进行初始化。

例如:

foo(std::vector<int> { 1});
foo(std::vector<int> { 4});
foo(std::vector<int> { 5});

它似乎创建了 3 个 vector ,分别分配给 1、4 和 5 个默认 (0) 元素。

相反,我想创建 3 个大小为 1,但值为 1、4 和 5 的 vector 。我知道我可以使用 vector<int> 这样的构造函数 (n, value) (1,1)、(1,4) 和 (1,5),但就我的理解而言,我想了解为什么我的初始化列表没有按照我的预期进行。

最佳答案

声明std::vector<int> { 1}创建 1 个值为 1 的元素。创建的元素将在第 0 个位置具有值 1。

声明std::vector<int> (1,6)创建 1 个值为 6 的元素。创建的元素在第 0 个位置的值为 6。

问题中提供的声明工作正常。

#include <iostream>
#include <vector>


void foo(std::vector<int> vec)
{
    std::cout<<"size of vec "<<vec.size()<<std::endl;

    for(int x =0; x < vec.size(); ++x)
    {
        std::cout<<vec[x]<<std::endl;
    }
    std::cout<<std::endl;
}

int main()
{
    foo(std::vector<int> { 1});
    foo(std::vector<int> { 4});
    foo(std::vector<int> { 5});
    foo(std::vector<int> (1,6));

   return 0;
}

关于c++ - 作为函数参数传递的 vector 初始值设定项列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23861973/

相关文章:

c++ - 整型到char数组

c++ - 尝试将 while 循环添加到此代码块

c++ - OpenCV 4.5.1 与 3.4.2 的性能差异

c++ - 如何在循环中迭代两个 vector

algorithm - 检查线段是否与从特定点绘制的垂直线相交?

c++ - 如何使用命名空间中定义的运算符?

c++ - 使用 Visual C++ 6.0 的 Windows 服务

c++ - 用 `= default` 声明的函数是否应该只进入头文件

c++ - 将 CreateProcess 输入流重定向到文件

c++ - `type` 对于 std::vector 而不是 OpenCV 中的 cv::Mat 的解释是什么?我该如何更改它? (C++)