Array 三維陣列 (C++)

更新於 2024/10/10閱讀時間約 4 分鐘

三維陣列(Three-dimensional array)

基本方法
<方法一>
int array[2][2][2]={1,2,3,4,5,6,7,8};

<方法二>
int array[2][2][2]={{1,2,3,4},{5,6,7,8}};
<方法一>
<方法二>
Output
i=0,j=0,k=0
1
i=0,j=0,k=1
2
i=0,j=1,k=0
3
i=0,j=1,k=1
4
i=1,j=0,k=0
5
i=1,j=0,k=1
6
i=1,j=1,k=0
7
i=1,j=1,k=1
8

動態配置
STEP1、配置記憶體
int*** array = new int**[2];

for(int i=0; i<2; i++){

array[i] = new int*[3];

for(int j=0; j<3; j++){

array[i][j] = new int[4];

}

}
  • 第一步
第一步
  • 第二步
第二步
  • 第三步
第三步
STEP2、初始化
for(int i=0; i<2; i++){

for(int j=0; j<3; j++){

for(int k=0; k<4; k++){

array[i][j][k]=i+j+k;

printf("i=%d,j=%d,k=%d = ",i,j,k);

std::cout<<array[i][j][k]<<std::endl;

}

}

}


STEP3、釋放記憶體
for(int i=0; i<2; i++){

for(int j=0; j<3; j++){

delete[] array[i][j];

}

delete[] array[i];

}

delete[] array;
  • 第一步
第一步
  • 第二步
第二步
  • 第三步
第三步

C++ Code

動態記憶體配置三維陣列

Output

i=0,j=0,k=0 = 0
i=0,j=0,k=1 = 1
i=0,j=0,k=2 = 2
i=0,j=0,k=3 = 3
i=0,j=1,k=0 = 1
i=0,j=1,k=1 = 2
i=0,j=1,k=2 = 3
i=0,j=1,k=3 = 4
i=0,j=2,k=0 = 2
i=0,j=2,k=1 = 3
i=0,j=2,k=2 = 4
i=0,j=2,k=3 = 5
i=1,j=0,k=0 = 1
i=1,j=0,k=1 = 2
i=1,j=0,k=2 = 3
i=1,j=0,k=3 = 4
i=1,j=1,k=0 = 2
i=1,j=1,k=1 = 3
i=1,j=1,k=2 = 4
i=1,j=1,k=3 = 5
i=1,j=2,k=0 = 3
i=1,j=2,k=1 = 4
i=1,j=2,k=2 = 5
i=1,j=2,k=3 = 6

備註

關於圖解記憶體配置以及釋放的部分,實際上可能不是依照圖解的方式建立以及釋放,但筆者覺得方便思考記憶,如果有詳細的配置記憶體流程可能還得請各位讀者與前輩分享指教。

參考資料

延伸閱讀

為什麼會看到廣告
avatar-img
6會員
46內容數
這是新手寫給新手的學習程式語言基礎教學筆記,內容會以C++為主
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
匿名李的沙龍 的其他內容
使用者自訂的資料型別
使用者自訂的資料型別
這是一個新手寫給新手的新手教學
break、continue、更進一步的for迴圈、while迴圈、switch
使用者自訂的資料型別
使用者自訂的資料型別
這是一個新手寫給新手的新手教學
break、continue、更進一步的for迴圈、while迴圈、switch
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
Thumbnail
JavaScript30 傳送門:https://javascript30.com/ Console.table 第四個練習是透過一些 array method 來操作 array 資料。 整個練習最讓我 WOW 的,是 console.table,竟然有這麼酷的 console
Thumbnail
很明顯可以看到 parallelSort(T[], Comparator<T> 大概可以帶來 2.5 倍到接近 3 倍的效能增益 (和數量無關)。所以,結論是當需要處理大量資料的排序時,真的可以考慮使用 parallelSort(T[], Comparator<T>。
1. Takeaway Data Structures 資料結構 - Array, Mapping, Struct 與 Enum 及程式碼實作 - 50:14 Returns - 12:21 Visibility 可視性 - public, private, external, interna
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
Thumbnail
JavaScript30 傳送門:https://javascript30.com/ Console.table 第四個練習是透過一些 array method 來操作 array 資料。 整個練習最讓我 WOW 的,是 console.table,竟然有這麼酷的 console
Thumbnail
很明顯可以看到 parallelSort(T[], Comparator<T> 大概可以帶來 2.5 倍到接近 3 倍的效能增益 (和數量無關)。所以,結論是當需要處理大量資料的排序時,真的可以考慮使用 parallelSort(T[], Comparator<T>。
1. Takeaway Data Structures 資料結構 - Array, Mapping, Struct 與 Enum 及程式碼實作 - 50:14 Returns - 12:21 Visibility 可視性 - public, private, external, interna