我已经定义了一个向量数组,并希望将这个数组传递给一个函数。
这是我的代码:
void gridlist(std::vector<int> *grid, int rows, int cols){
..... }
int rows=4;
int cols=5;
std::vector<int> grid[rows][cols];
gridlist(grid,rows,cols);
对我来说将数组传递给函数的唯一方法是通过指针 (*) ?。
我根据以下描述尝试了不同的方法: Passing a 2D array to a C++ function ,但我没有设法让它工作。
我总是收到以下错误:
could not convert '(std::vector<int> (*)[cols])(& grid)' from 'std::vector<int> (*)[cols]' to 'std::vector<int>'
gridlist(grid,rows, cols);
我不知道我做错了什么。一般来说,什么是完成这项任务的最佳/最安全的方法?
原文由 Alex Gors 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您想要两个维度的可变大小,则不能直接传递 2D 数组。
一种解决方案是修复
cols
的大小并声明您的函数,如:如果固定一维的大小是不可接受的,则可以使用临时变量:
并称之为:
但是,我会使用向量的向量而不是传统的 c 样式数组。