將二維矩陣表示爲數組數組還是將一維數組轉換爲相應數組索引的函數的一維數組更快?如何在C++中表示二維矩陣
回答
2D陣列是更方便,例如
const int rows = 100;
const int cols = 100;
int arr[rows][cols];
你指的數組元素作爲arr[i][j]
其中0 <= i < rows
和0 <= j < cols
更加方便,直到實際需要在運行時選擇的尺寸爲止。然後它會下降。 – 2014-10-28 12:27:15
你可以使一維陣列和行指針的陣列。然後,您將獲得兩全其美的優勢:一個具有良好內存位置和可預測訪問的方便界面。
int * matrix1d = new int [rows * cols];
int ** matrix2d = new int * [rows];
for (size_t i = 0; i != rows; ++i)
matrix2d[i] = &matrix1d[i * cols];
int v1 = matrix1d[r * cols + c];
int v2 = matrix2d[r][c];
你也可以做一些很酷的技巧,比如常量行交換(對於某些矩陣簡化算法非常有用) – 2014-10-28 12:27:55
我建議你使用std::vector
,因爲它本質上是動態的,易於使用。
int row;
int col;
std::vector< std::vector<int> > twoDMatrix(row, std::vector<int>(col));
注意,如果你正在使用std::vector
不要忘記添加#include<vector>
。
const int row = 256; const int col = 256; vector<vector<int> > matrix2D(row, (col,0));
/*通過這一點,我們可以說,我們有一個二維矩陣是256 * 256,並且所有的元素都爲0 */
- 1. 如何在java中的二維矩陣中表示double值
- 2. 矩陣的二維矩陣
- 3. 如何從n維矩陣得到n維二維子矩陣?
- 4. 如何在c中排序矩陣(二維數組)?
- 5. matlab中列表的二維矩陣?
- 6. 如何轉置二維矩陣存儲爲C一維數組
- 7. C++ ::二維矩陣,在一維中動態使用unique_ptr?
- 8. 加載矩陣爲二維向量C++
- 9. 添加二維矩陣用C
- 10. java在二維矩陣中移動
- 11. 二維矩陣值差
- 12. 二維區間矩陣
- 13. 二維矩陣STATUS_ACCESS_VIOLATION錯誤
- 14. 在JSON提供的javascript中創建二維(二維)矩陣
- 15. python中的三維矩陣表示
- 16. 分割三維矩陣劃分爲多個二維矩陣
- 17. 如何從函數返回矩陣(二維數組)? (C)
- 18. 如何將參數的二維矩陣傳遞給函數C
- 19. 如何使用衝浪或網格顯示二維矩陣?
- 20. 將二維numpy陣列轉換爲二維numpy矩陣
- 21. 二叉二維矩陣的python輪廓
- 22. 的Javascript:查找二維矩陣(陣列)
- 23. console.writeLine(矩陣)二維陣列字符串[,]
- 24. 如何在Matlab中以二維矩陣向量化操作
- 25. 如何在Python中將二維矩陣導出爲csv文件?
- 26. 如何在numpy中隨機採樣二維矩陣
- 27. 如何可視化存儲在二維矩陣中的值?
- 28. 二維陣列C#
- 29. Matlab中的二維邏輯矩陣
- 30. Python中二維矩陣的元素
基準,並找出。 – 2014-10-28 12:10:01
我認爲這回答你的問題http://stackoverflow.com/questions/17259877/1d-or-2d-array-whats-faster – WalkingRandomly 2014-10-28 12:12:17
如果數組是動態分配的,可能是後者。 – 2014-10-28 12:13:28