單元地圖

前置知識

  • ✓ 陣列的宣告、遍歷與越界行為(上冊第六單元,特別是 6.16.8
  • ✓ 函式與內建函式的用法(上冊第七單元,特別是 7.6
  • ✓ C 字串的儲存與讀入(下冊 8.68.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_backpop_backsizeemptyresize 等成員函式
  • ✓ 用 vector 的陣列與巢狀 vector 收納多條長度不一的數列
  • ✓ 避開 size() 回傳無號整數的下溢陷阱
  • ✓ 說出 iterator 是「指向容器裡位置」的型態,會用 begin()end()inserterase
  • ✓ 用 = 複製 vector、用 ==< 按字典序比較 vector
  • ✓ 用 pair 把兩個值綁在一起,說出 pair 的比較規則
  • ✓ (延伸)用 array 容器讓「固定幾個一組」的資料住進 vector
  • ✓ 用 string 讀入、修改、串接、比較字串,取代 C 字串的繁瑣操作
  • ✓ 熟練 substrfind 等解題常用操作,避開字串加法的效率陷阱
  • ✓ 用 stoito_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 後半的 inserterase、10.12 array、各節的補充知識框。