---
# System prepended metadata

title: 第11檔

---

# 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
