單元地圖
¶前置知識
- ✓ 陣列的宣告、遍歷與越界行為(上冊第六單元,特別是 6.1、6.8)
- ✓ 函式與內建函式的用法(上冊第七單元,特別是 7.6)
- ✓ C 字串的儲存與讀入(下冊 8.6、8.7)
- ✓ 字典序的定義(下冊 8.9)
- ✓ 運算量估計與 10^9 法則(上冊 4.9)
¶學習成果
本單元結束後,你將能夠:
- ✓ 說出容器是什麼:裝很多同型態元素、附帶現成操作的「整理櫃」
- ✓ 看懂 O(1)/O(n)/O(n \log n)/O(n^2) 標籤,會用「認 O、代 n、除以 10^9」三步驟估做法會不會 TLE
- ✓ 宣告與初始化 vector,用它取代「大小得先寫死」的陣列
- ✓ 熟練使用
push_back、pop_back、size、empty、resize等成員函式 - ✓ 用 vector 的陣列與巢狀 vector 收納多條長度不一的數列
- ✓ 避開
size()回傳無號整數的下溢陷阱 - ✓ 說出 iterator 是「指向容器裡位置」的型態,會用
begin()、end()與insert、erase - ✓ 用
=複製 vector、用==和<按字典序比較 vector - ✓ 用 pair 把兩個值綁在一起,說出 pair 的比較規則
- ✓ (延伸)用 array 容器讓「固定幾個一組」的資料住進 vector
- ✓ 用 string 讀入、修改、串接、比較字串,取代 C 字串的繁瑣操作
- ✓ 熟練
substr、find等解題常用操作,避開字串加法的效率陷阱 - ✓ 用
stoi、to_string在字串與數字之間互轉,掌握「把數字當字串處理」的思維 - ✓ 用
getline與 stringstream 處理「一整行」與「數量不定」的輸入
¶建議閱讀路線
本單元分量不小,依三個層次安排:
- 核心必會:10.1–10.4、10.6(vector 主線)、10.7–10.10(string 主線)、10.11 pair。
- 下一單元前需看懂:10.5 前半的
begin()/end()與「含頭不含尾」——第十一單元的sort(v.begin(), v.end())馬上要用。 - 延伸、可之後二刷:10.5 後半的
insert/erase、10.12 array、各節的補充知識框。