我有一個問題,理解C++中有關數組的一些問題,請隨身攜帶,因爲我沒有在包含數組的Stackoverflow的其他問題中找到任何對我的問題的答案。2d數組和1d數組存儲比較?
如果我有3行4列的數組,並將它們創建爲1d數組,並通過每次循環訪問每行數據4來訪問每行數據。與2d方法相比,這樣做是否節省了我的時間,而這需要更多的分配。
,從而代替這種:
int **array = new int * [3];
for(int i = 0; i < 4; i++) {
array[i] = new int [4];
}
我使此:
int *array = new int [3 * 4];
和我訪問每一行的數據是這樣的:行數= 3,colomns = 4:
for(int i = 0;i < 3; i++) {
for(int j = 0;j < (3 * 4); j++) {
cout << "row : << i << " , 4: " array[i * j];
}
}
1)通過這種方式爲我的程序節省了超過2天的時間嗎?
2)這是一個壞方法或一個很好的方法扭動我的2D陣列在1D數組像我做了什麼?
注:
我的數組不會是動態的,我的數組的大小會知道創建它之前,我會用它在我的神經網絡的項目。我的擔憂和關注點在於速度。
請原諒我,如果我的問題是愚蠢的,但我之前搜索,並不明白。
在此先感謝。
訪問應該是'陣列[colomns * I + J]'(或'數組[行* J + I]')...... – Jarod42
檢查我的編輯? @ Jarod42 –
你將有更好的1d數組緩存,但如果在編譯時已知大小,你可以直接執行'int array [3] [4];'。 – Jarod42