「C++ 探索之旅」第一部分第 9 課:數組威武,動靜合一。前序課程覆蓋變量、流程控制、函數、文件組織,本課系統講解數組概念、靜態/動態數組、多維數組及字符串本質。
存儲同類型多個變量(如前 10 名得分、用戶名列表)。不用數組需聲明大量單獨變量,無法循環處理。
int const SIZE = 5;
int scores[SIZE]; // 5 個 int
double angles[3] = {30,45,60}; // 初始化列表
scores[0] 為第一個
for (int i = 0; i < SIZE; ++i) cout << scores[i] << endl;
double average(double arr[], int size) { // size 必傳
double sum = 0;
for (int i=0; i
#include
vector v1(5); // 5 個 0
vector v2(5, 3); // 5 個 3
vector names(10, "匿名");
vector empty; // 空向量
| 操作 | 函數 | 說明 |
|---|---|---|
| 尾部添加 | push_back(val) | 擴容自動處理 |
| 尾部刪除 | pop_back() | 不返回值 |
| 獲取大小 | size() | 當前元素數 |
| 訪問元素 | v[i] / at(i) | at 含邊界檢查 |
void process(const vector& v) { // const 引用:避免拷貝、防修改
for (int x : v) cout << x << ' ';
}
vector create(int n) { return vector(n, 0.0); } // 可返回
int const ROWS = 5, COLS = 4;
int matrix[ROWS][COLS];
matrix[2][3] = 99; // 第 3 行第 4 列
vector> grid;
grid.push_back(vector(5)); // 添加一行 5 列
grid.push_back(vector(3, 4)); // 添加一行 3 列全 4
grid[0].push_back(8); // 第一行尾部添加
grid[2][3] = 9; // 訪問(需確保存在)
vector>> std::string 類似 vector,支援 size()、push_back()、operator+=、下標訪問。
string name = "Julien";
name[0] = 'L'; // "Lucien"
cout << name[2] << endl; // 'c'
string s = "Hello";
cout << s.size() << endl; // 5
s.push_back('!'); // "Hello!"
s += " World"; // "Hello! World"
string a = "Albert", b = "Einstein";
string full = a + " " + b; // "Albert Einstein"
| 特性 | 靜態數組 | vector | 多維靜態 | 多維 vector |
|---|---|---|---|---|
| 大小 | 固定 | 可變 | 固定 | 可變 |
| 內存 | 棧/全局 | 堆 | 棧/全局 | 堆(非連續) |
| 函數傳遞 | 需傳大小 | 自帶 size() | 需傳維度 | 引用傳遞 |
| 返回 | 不可 | 可 | 不可 | 可 |
| 適用場景 | 大小已知、高性能 | 大小動態、通用 | 矩陣、固定網格 | 鋸齒、動態網格 |
第 10 課:文件讀寫,海闊憑魚躍 —— 學習 fstream 實現數據持久化。