C++ 陣列

這篇教學將教你使用vector標準庫來創建、寫入、讀取陣列

1.1 一維陣列

在C++中我們使用以下程式創建一個有10個空格的一維數字陣列

#include <iostream> #include <vector> //引入vector標準庫 using namespace std; int main() { vector<int> list(10); //list只是名字 //跟定義變數一樣,只是改成用vector<int>定義陣列 } }

接著讓我們先把每個空格都填上數字1

#include <iostream> #include <vector> using namespace std; int main() { vector<int> list(10, 1); //在這個跨號中可以把預設數字寫上 }

如果你想讓你自己輸入~~

範例輸入:
1 3 5 2 7 2 5 2 8 2
#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; } }

同時我們一定也需要知道陣列中的數值吧,我以我們會~~

#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。

#include <iostream>
#include <vector>
using namespace std;

int main() {
    // 創建一個5行4列的二維陣列,初始化為0
    vector<vector<int>> matrix(5, vector<int>(4, 0));
}

寫入二維陣列

如果我們想要修改或寫入二維陣列的數據,可以使用雙重for迴圈來達成。例如,將上面創建的二維陣列中的所有元素設置為其行索引與列索引之和:

#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迴圈。以下代碼片段將遍歷上面創建的二維陣列,並打印出所有元素:

#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