# C++ Vector 教學 ## 什麼是陣列? 在程式設計中,我們常常需要儲存一組相似的資料,比如學生的成績、感測器的數據、或是遊戲中的敵人座標。如果我們要用變數來存放這些資料,會變得非常麻煩。 想像一下,如果我們要儲存 5 位學生的分數,我們可能會這樣寫: ```cpp int score1 = 85; int score2 = 90; int score3 = 78; int score4 = 92; int score5 = 88; ``` 但如果有 **1000** 位學生呢?這樣的寫法顯然不實際。因此,我們需要一種 **可以存放多個數值的變數**——這就是 **陣列**(Array)的概念。 --- ## 什麼是 `vector`? 在 C++ 中,`vector` 是一種**動態大小的陣列**,可以隨時增加或刪除元素,這點與一般的靜態陣列不同。 你可以把 `vector` 想成一個「可以自動擴充的變數群組」,當你需要更多空間時,它會自己調整大小,完全不需要你手動管理記憶體。 我們先來看看 `vector` 的基本用法! --- ## `vector` 的宣告與初始化 要使用 `vector`,記得先 `#include <vector>`。 ```cpp #include <iostream> #include <vector> // 引入 vector using namespace std; int main() { vector<int> scores = {85, 90, 78, 92, 88}; // 建立一個存放分數的 vector cout << "第一個學生的分數: " << scores[0] << endl; cout << "第二個學生的分數: " << scores[1] << endl; return 0; } ``` 這段程式碼做了幾件事: 1. `vector<int> scores` 建立了一個 `int` 型態的 `vector`,可以存放多個整數。 2. `{85, 90, 78, 92, 88}` 是我們初始化 `vector` 的方式,直接給它一組數字。 3. `scores[0]` 表示取得 `vector` 的第一個元素(從 **0** 開始算)。 輸出結果: ``` 第一個學生的分數: 85 第二個學生的分數: 90 ``` --- ## `vector` 的基本操作 ### **新增元素(`push_back()`)** 如果想要**動態增加**新的成績,可以使用 `push_back()`: ```cpp scores.push_back(95); // 新增一個學生的分數 ``` ### **刪除最後一個元素(`pop_back()`)** 如果最後一個分數輸入錯誤,可以使用 `pop_back()` 來刪除它: ```cpp scores.pop_back(); // 移除最後一個分數 ``` ### **查看 `vector` 的大小(`size()`)** `size()` 會回傳 `vector` 內的元素數量。 ```cpp cout << "目前有 " << scores.size() << " 位學生的分數" << endl; ``` --- ## `vector` 的迴圈應用 假設我們要輸出所有學生的分數,直接寫 `cout` 太麻煩了,我們可以用 `for` 迴圈: ```cpp for (int i = 0; i < scores.size(); i++) { cout << "第 " << i+1 << " 位學生的分數: " << scores[i] << endl; } ``` 或者使用更簡潔的 **範圍型 `for` 迴圈**: ```cpp for (int score : scores) { cout << "分數: " << score << endl; } ``` --- ## `vector` 小結 | 操作 | 說明 | 範例 | |--------------|------------------------------------------|------------------------------------| | 宣告 | 建立一個 `vector` | `vector<int> v;` | | 初始化 | 給定初始值 | `vector<int> v = {1, 2, 3};` | | 取得大小 | 查看 `vector` 內的元素個數 | `v.size();` | | 新增元素 | 在 `vector` 最後加上一個元素 | `v.push_back(5);` | | 刪除元素 | 移除 `vector` 最後一個元素 | `v.pop_back();` | | 讀取元素 | 取得 `vector` 的某個值 | `cout << v[0];` | --- 夠了 該寫題目了 http://120.101.182.21/d/hd112/p/55 http://120.101.182.21/d/hd112/p/56 http://120.101.182.21/d/hd112/p/57 http://120.101.182.21/d/hd112/p/58 http://120.101.182.21/d/hd112/p/59