0

我正在处理 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])
4

1 回答 1

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)
于 2014-09-26T07:57:02.883 回答