本單元常犯錯誤總覽
| # | 錯誤描述 | 錯誤類型 | ✗ 錯誤寫法 | ✓ 正確寫法 |
|---|---|---|---|---|
| 1 | v[i] 索引越界 |
UB | vector<int> v(3); v[3] = 1; |
檢查範圍;除錯時換 v.at(i) |
| 2 | 空 vector 呼叫 pop_back/back/front |
UB | 沒檢查就 v.pop_back(); |
先 if (!v.empty()) |
| 3 | 空 vector 遇上 size() - 1 |
RE/邏輯錯誤 | for (int i = 0; i <= v.size() - 1; i++) |
int n = (int)v.size(); 再用 n |
| 4 | 把 reserve 當 resize 用 |
UB/邏輯錯誤 | v.reserve(n); v[0] = 1; |
v.resize(n);(reserve 別用) |