传递到C++中的函数的2D矢量
2D vector passing to a function in C++
当我声明像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[])
特技
相关文章:
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 如何通过 getter 函数删除矢量的元素?
- 可以打印矢量和矢量中的矢量的非重载C++函数
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 具有变量Number of Arguments的std::函数的矢量
- C++矢量复制构造函数和赋值运算符是否也复制保留空间?
- 打印传递给打印函数的矢量
- C++ - std::构造函数中的矢量初始化
- 无效打印(矢量<string>)函数未打印
- C++11:将矢量元素作为线程传递到线程函数中
- C++ 根据成员函数从矢量中擦除对象
- 在 c++ 中将数字转换为矢量数组的函数
- 矢量迭代器在尝试调用函数时使我的程序崩溃
- 有没有办法通过 main 函数访问受保护的矢量大小而无需将其转换为公共?
- 从尝试引用已删除函数的矢量 C++ 中删除对象
- 带有常量指针的矢量构造函数示例
- 如何使用 erase() 函数通过索引擦除矢量?
- 泛型函数反向打印任何矢量,编译器出错
- 如何将POW函数矢量化(具有负碱基)
- 使用内部函数矢量化矩阵乘法的加法部分