当我声明像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;
}
我该怎么做?为什么会导致错误?
答案 0 :(得分:1)
在第二个示例中,您声明了一个vector数组。
所以你可以使用:
int change(vector<int>(&v)[2])
或
int change(vector<int>v[]) // pointer
或
int change(vector<int>*v) // pointer
答案 1 :(得分:-2)
地狱如何运作,你想要从vector<int>[]
隐式转换为vector<vector<int>>
?
vector是一个包含东西的对象,一个数组不是
请注意,数组不需要通过引用传递,所以
int change(vector<int> v[])
诀窍