在运行时为C++中的n维数组分配内存的最佳方式是什么?我试图从文件中读取值的矩阵,并根据我读取的文件,矩阵可以是任意大小。但是,一旦创建了矩阵,其大小就是静态的。如何为C++中的静态n维数组分配内存
因为我不是在编译时知道的大小将是什么,我不能把它定义为int[a][b]
,所以我是用指针的指针一样int**
实验,但是当我宣布int** arr; arr[0][0] = 1
我得到一个错误。我也尝试过其他解决方案。例如,我尝试使用Determine array size in constructor initializer的其中一个答案,使用int* arr; arr = new int[a]
,但似乎没有工作,一旦我尝试使用它的两个维度。当然,我可能会错误地使用它,但下面的代码块给我一个段错误:
int** arr;
(*arr) = new int[a];
编辑:当然,之后我问的问题,我发现一些半适用于Need help regarding Dynamic Memory Allocation for two dimensional arrays in C++。我不想这样做,但它绝对是可行的。
您也可以将它分配到一个数组中,然后使用索引访问它。比如'index = x * width + y'。 – Thomas