传递到C++中的函数的2D矢量

2D vector passing to a function in C++

本文关键字:函数 矢量 2D C++      更新时间:2023-10-16

当我声明像vector<vector<int> >v这样的向量并试图将其传递给下面这样的函数时,它就起作用了:

int change(vector<vector<int> >&v)
{
    v[0][0]=-1;
}
int main()
{
    vector<vector<int> >v;
    int a[]={1,2,3};
    int b[]={4,5,6};
    v.push_back(vector<int>(a,a+3));
    v.push_back(vector<int>(b,b+3));
    change(v);
    cout<<v[0][0];
return 0;
}

但是,当我像vector<int>v[2]一样声明向量并以同样的方式将其传递给函数时,会导致错误。

int change(vector<vector<int> >&v)
{
    v[0][0]=-1;
}
int main()
{
    vector<int>v[2];
    int a[]={1,2,3};
    int b[]={4,5,6};
    v[0]=vector<int>(a,a+3);
    v[1]=vector<int>(b,b+3);
    change(v);
    cout<<v[0][0];
return 0;
}

我该怎么做?为什么会导致错误?

在第二个示例中,您声明了一个向量数组。

所以你可以使用其中一种:

int change(vector<int>(&v)[2])

int change(vector<int>v[]) // pointer

int change(vector<int>*v) // pointer

如果想要从vector<int>[]vector<vector<int>>的隐式转换,这怎么可能工作?向量是包含事物的对象,数组不是

请注意,数组不需要通过引用传递,因此

int change(vector<int> v[])

特技