在運行時爲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