我从用户
获取行n和列m的大小我想制作一个大小为nxm的二维数组(矩阵),对其进行初始化并对其进行一些处理
int main()
{
int m,n;
cin>>m>>n;
const int grow=m;
const int gcol=n;
auto G = new double[grow][gcol](); //GIVES ERROR that grow and gcol must be const
/*int** G = new int*[n];
for (int i = 0; i < n; ++i)
G[i] = new int[n];*/
}
答案 0 :(得分:1)
您始终可以使用y * gcol + x
在一维数组中进行索引,以使其有效地用作二维数组。有了它,你可以使用动态内存,例如使用std::vector<double>
。
答案 1 :(得分:1)
// GIVES ERROR,增长和gcol必须是const
不,它没有。除非你的编译器坏。再次阅读错误。
它给出了gcol
必须是常量表达式的错误。
您不能拥有动态数组的动态数组。它在c ++中根本不可能。您只能拥有静态大小的动态数组,这在编译时是已知的。
因此,您不能拥有在运行时确定两个维度的2D数组。
您有两种选择:
在任何一种情况下,我建议使用一个类来管理内存。或许std::vector
。
答案 2 :(得分:0)
数组大小是类型的一部分,需要在编译时知道。你在运行时得到它。改为使用向量。