C++ 传递给C+中函数的2D向量+;
当我声明一个像C++ 传递给C+中函数的2D向量+;,c++,c++11,C++,C++11,当我声明一个像vectorv这样的向量并尝试将其传递给下面这样的函数时,它会工作: 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));
vectorv
这样的向量并尝试将其传递给下面这样的函数时,它会工作:
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;
}
int变化(向量&v)
{
v[0][0]=-1;
}
int main()
{
向量;
int a[]={1,2,3};
int b[]={4,5,6};
v、 推回(向量(a,a+3));
v、 推回(向量(b,b+3));
变化(五);
cout在第二个示例中,您声明了一个向量数组
因此,您可以使用:
int change(vector<int>(&v)[2])
int变化(向量(&v)[2])
或
int-change(vectorv[])//指针
或
int-change(vector*v)//指针
这到底是怎么回事,你想要从vector[]
隐式转换到vector
?
向量是一个包含东西的对象,数组不是吗
请注意,数组不需要通过引用传递,因此
int change(vector<int> v[])
int变化(向量v[]
做这个把戏回答告诉你vectorv[2]
是一个向量数组,而不是“2D向量”.它们是通过引用传递指向向量的指针,而不是通过引用传递指向向量的指针。两者都很好,我认为它满足了OP的期望…如果我这样传递向量会有什么问题?错误的是你说它是通过引用传递的,但它实际上是通过指向向量的指针。任何指针。它可以为空,也可以是指向单个向量的指针,它可以是指向长度为1或10000的数组的指针。您可以毫无理由地丢弃类型信息。是的;)明白了…我更新了答案您的答案仍然存在相同的问题。
int change(vector<int>v[]) // pointer
int change(vector<int>*v) // pointer
int change(vector<int> v[])