# 二維陣列
## 1. 什麼是二維陣列?
- **定義:** 二維陣列是由多個一維陣列所組成的陣列,可以用來儲存表格或矩陣型的資料。
- **結構:** 二維陣列有「行」和「列」,每個元素都可以透過兩個索引來存取。
因為我很常忘記哪個是"行"哪個是"列",所以有了一個特別的記法,就是"一列火車是橫的",這樣應該會比較好記一點(吧),反正學了二階行列式**應該**就會更了解了。
## 2. 如何宣告二維陣列?
在 C++ 中,宣告二維陣列的語法如下:
```cpp
type arrayName[row_size][col_size];
```
- `type` 是陣列元素的資料型態(如 `int`, `float` 等)。
- `row_size` 是陣列的行數(深的)。
- `col_size` 是陣列的列數(橫的)。
## 3. eg
假設我們要宣告一個 3x3 的整數陣列:
```cpp=
//這是初始化的,用{}把值包起來。當然,也可以看成三個一維陣列
int arr[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
```
這樣的二維陣列會看起來像這樣:
```
1 2 3
4 5 6
7 8 9
```
## 4. 如何存取二維陣列的元素?
- 可以使用兩個索引來存取二維陣列的元素,格式為:`arr[row_index][col_index]`。
- **eg:**
```cpp
int arr[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
cout << arr[0][1]; // 輸出 2
cout << arr[2][0]; // 輸出 7
```
## 5. 二維陣列的常見應用
- **矩陣運算:** 二維陣列常被用於**儲存和操作**數學中的矩陣。
- **表格數據:** 可以用來儲存和操作表格型的數據,如**學生成績**(應該看過吧?對吧對吧)、遊戲**棋盤**等。
- **影像處理:** 圖像可以視為由像素組成的矩陣,二維陣列適合用來處理**圖**等等的數據。
## 6. 二維陣列的遍歷
可以使用巢狀迴圈來遍歷二維陣列:
```cpp
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
//cout換成cin就是輸入資料囉!!!!
```
這會輸出:
```
1 2 3
4 5 6
7 8 9
```
當然妳也可以
```cpp
for(int i = 0; i < 3; i++){
cout << arr[i][0] << " " << arr[i][1] << " " << arr[i][2] << endl;
}
```
## 7. 注意事項
- **固定大小:** 在 `C++` 中,二維陣列的大小必須在編譯時就確定,**不能動態改變**。
- **初始化:** 可以在宣告時初始化二維陣列,也可以在後面進行逐一賦值。