語法書 / AA 競程語法書 下冊 / 第十單元 / 本單元常犯錯誤總覽

本單元常犯錯誤總覽

# 錯誤描述 錯誤類型 ✗ 錯誤寫法 ✓ 正確寫法
1 v[i] 索引越界 UB vector<int> v(3); v[3] = 1; 檢查範圍;除錯時換 v.at(i)
2 空 vector 呼叫 pop_backbackfront 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 reserveresize UB/邏輯錯誤 v.reserve(n); v[0] = 1; v.resize(n);reserve 別用)
5 迴圈裡大量 inserterase 在前段 TLE 每圈 v.insert(v.begin(), x) 改成尾端操作或換做法
6 兩個字面常數相加 編譯錯誤 string s = "AACP" + "SCHOOL"; string s = "AACP"; s += "SCHOOL";
7 比較式兩側都不是 string 邏輯錯誤 if ("AB" < "A") 至少一側是 string 變數
8 find 回傳值直接當條件 邏輯錯誤 if (s.find(t)) if (s.find(t) != string::npos)
9 迴圈裡 ans = ans + s TLE ans = ans + s; ans += s;
10 stoi 餵超過 int 範圍的數 RE stoi("9876543210") stoll;更大就整串當字串處理
11 cin >> 之後接 getline 邏輯錯誤 讀完 n 直接 getline 中間補 cin.ignore();
12 重複使用 stringstream 沒重置 邏輯錯誤 讀完直接再 ss << ... ss.str(""); ss.clear();(或每次開新的)