【发布时间】:2014-11-20 23:55:31
【问题描述】:
我正在处理一些 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])
【问题讨论】:
-
您遇到错误了吗?究竟是什么问题?
-
了解如何使用
new[]和delete[]在堆上分配(和解除分配!)数组值——这将允许您使用在运行时而不是编译时确定的大小。 -
您定义的 VLA(可变长度数组)不是 C++ 标准的一部分。不要指望它会像现在这样工作。它们作为实现扩展提供。模板提供在编译时完成。您的数组维度是在运行时定义的。我的建议是使用
std::vector<std::vector<int>>并旋转基于迭代器的打印解决方案。
标签: c++ multidimensional-array variable-length-array