# C++ 陣列 這篇教學將教你使用`vector`標準庫來創建、寫入、讀取陣列 ## 1.1 一維陣列 在C++中我們使用以下程式創建一個有10個空格的一維數字陣列 ```cpp= #include <iostream> #include <vector> //引入vector標準庫 using namespace std; int main() { vector<int> list(10); //list只是名字 //跟定義變數一樣,只是改成用vector<int>定義陣列 } } ``` 接著讓我們先把每個空格都填上數字1 ```cpp= #include <iostream> #include <vector> using namespace std; int main() { vector<int> list(10, 1); //在這個跨號中可以把預設數字寫上 } ``` 如果你想讓你自己輸入~~ ``` 範例輸入: 1 3 5 2 7 2 5 2 8 2 ``` ```cpp= #include <iostream> #include <vector> using namespace std; int main() { int temp; //創建一個暫存變數 vector<int> list(10); for (int i = 0; i < 10; i++){ cin >> temp; //C++的輸入不用寫分割 list[i] = temp; } } ``` 同時我們一定也需要知道陣列中的數值吧,我以我們會~~ ```cpp= #include <iostream> #include <vector> using namespace std; int main() { int temp; vector<int> list(10, 1); for (int i = 0; i < 10; i++){ cin >> temp; list[i] = temp; } for (int i = 0; i < 10; i++){ cout << list[i] << " ";// 用for迴圈輸出 } } ``` ### 小練習 給定一個一維陣列,其中包含了學生的成績(整數),請編寫一個C++程式,計算並輸出這些學生成績的平均值。假設陣列中至少有一個成績,並且所有成績都是正整數。 ``` 範例輸入: 5 90 85 92 88 76 ``` ``` 範例輸出: 86.2 ``` --- ## 二維陣列 在C++中,我們可以使用`vector`來創建二維陣列。二維陣列可以被視為"陣列的陣列",這讓我們可以存儲表格形式的數據。 ### 創建二維陣列 首先,讓我們來看如何創建一個二維陣列。以下示例創建了一個5行4列的二維陣列,並將所有元素初始化為0。 ```cpp #include <iostream> #include <vector> using namespace std; int main() { // 創建一個5行4列的二維陣列,初始化為0 vector<vector<int>> matrix(5, vector<int>(4, 0)); } ``` ### 寫入二維陣列 如果我們想要修改或寫入二維陣列的數據,可以使用雙重`for`迴圈來達成。例如,將上面創建的二維陣列中的所有元素設置為其行索引與列索引之和: ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<vector<int>> matrix(5, vector<int>(4, 0)); for (int i = 0; i < matrix.size(); i++) { // 遍歷行 for (int j = 0; j < matrix[i].size(); j++) { // 遍歷列 matrix[i][j] = i + j; // 設置元素值為行索引與列索引之和 } } } ``` ### 讀取二維陣列 讀取二維陣列的元素也是使用雙重`for`迴圈。以下代碼片段將遍歷上面創建的二維陣列,並打印出所有元素: ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<vector<int>> matrix(5, vector<int>(4, 0)); // 假設matrix已被填充數據 for (int i = 0; i < matrix.size(); i++) { // 遍歷行 for (int j = 0; j < matrix[i].size(); j++) { // 遍歷列 cout << matrix[i][j] << " "; } cout << endl; // 每輸出完一行後換行 } } ``` ### 小練習 給定一個二維陣列,其中包含了班級中每位學生的成績(整數),每行代表一位學生的成績。請編寫一個C++程式,計算並輸出每位學生成績的平均值,以及所有學生的總平均成績。 假設每位學生都至少有一門成績,並且所有成績都是正整數。此外,輸入的第一行為學生人數,隨後的每一行代表一位學生的成績,成績之間以空格分隔。 ``` 範例輸入: 3 90 85 92 88 76 84 95 92 89 範例輸出: 學生1平均成績:89 學生2平均成績:82.6667 學生3平均成績:92 總平均成績:87.8889 ```