在运行时在c ++中为n维数组分配内存的最佳方法是什么?我试图从文件中读取值的矩阵,并且根据我读取的文件,矩阵可以是任何大小。但是,一旦创建了矩阵,它的大小就是静态的。
由于我在编译时不知道大小是多少,我无法将其定义为int[a][b]
,因此我正在尝试使用指向int**
的指针,但是我声明int** arr; arr[0][0] = 1
我收到错误。我也尝试过其他解决方案。例如,我尝试使用int* arr; arr = new int[a]
的一个答案,使用int** arr;
(*arr) = new int[a];
,但是一旦我尝试将它用于二维,它似乎不起作用。当然,我可能会错误地使用它,但下面的代码块给了我一个段错误:
{{1}}
编辑:当然,在我提出这个问题之后,我在Determine array size in constructor initializer找到了一些半合适的东西。我不想这样做,但这绝对可行。
答案 0 :(得分:0)
你会这样做(从answer中偷来的):
int** ary = new int*[sizeX];
for(int i = 0; i < sizeX; ++i)
ary[i] = new int[sizeY];
或者,你可以这样做:
int *ary = new int[sizeX*sizeY];
// ary[i][j] is then rewritten as
ary[i*sizeY+j]
它可能会消除指针间接的麻烦。