传递定义2D数组元素大小的变量

时间:2014-09-26 03:33:27

标签: c++ multidimensional-array variable-length-array

我正在使用C ++进行一些数组传递。以下工作,只要我用数字定义数组,如:

 gen0[6][7]. 

但是,我无法调用我发送变量作为我的大小参数的方法。我意识到我可能需要将它们作为指针或引用传递。我在别处读过使用unsigned int,没有用。我尝试了一些变化,但我在整个概念上挣扎。任何提示/建议将不胜感激!

//in main
 int col1, col2;
 col1 = rand() % 40 + 1;
 col2 = rand() %  50 +1;
 int gen0[col1][col2];
 print(gen0)

//not in main
 template<int R, int C>
 void print(int (&array)[R][C])

1 个答案:

答案 0 :(得分:1)

VLA(可变长度数组)是某些编译器的扩展,它在运行时完成。

,而:

template<int R, int C> void print(const int (&array)[R][C])

是通过引用传递多维数组的正确方法,这是在编译时完成的,与VLA不兼容。

可能的替代方法是使用std::vector

std::vector<std::vector<int>> gen0(col1, std::vector<int>(col2));

void print(const std::vector<std::vector<int>>& array)