如何将向量数组传递给函数

新手上路,请多包涵

我已经定义了一个向量数组,并希望将这个数组传递给一个函数。

这是我的代码:

 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 许可协议

阅读 297
1 个回答

如果您想要两个维度的可变大小,则不能直接传递 2D 数组。

一种解决方案是修复 cols 的大小并声明您的函数,如:

 void gridlist1(std::vector<int> grid[][5],int rows){...}

如果固定一维的大小是不可接受的,则可以使用临时变量:

 void gridlist(std::vector<int> **grid,int rows, int cols){...}

并称之为:

 const int rows=4;
const int cols=5;

std::vector<int> grid[rows][cols];

// Temp variable
std::vector<int>* temp[rows];
for (int i = 0; i < rows; ++i) temp[i] = grid[i];

gridlist(temp,rows,cols);
         ^^^^

但是,我会使用向量的向量而不是传统的 c 样式数组。

原文由 Support Ukraine 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题