string() 空串string(const char* s) C 串構造string(size_type n, char c) n 個 cstring(const string&, pos, len) 子串構造string(Iter beg, Iter end) 迭代器區間構造initializer_list 構造cin >> str:讀單詞(跳過空白)。getline(cin, str):讀整行(含空格,丟棄 \n)。getline(cin, str, delim):自定義分隔符。size(), capacity(), reserve(), shrink_to_fit()。operator[], at(), front(), back(), data(), c_str()。push_back, append, insert, erase, replace, clear。find, rfind, find_first_of, substr。| 類型 | 所有權語義 | 適用場景 |
|---|---|---|
unique_ptr | 獨占所有權,不可複製,可移動 | 單一擁有者、RAII、工廠函數返回 |
shared_ptr | 共享所有權,引用計數 | 多擁有者、觀察者模式、STL 容器存指針 |
weak_ptr | 弱引用,不增加計數 | 打破循環引用、緩存、觀察者 |
auto_ptr (C++11 棄用) | 轉移所有權的複製語義 | 僅維護舊代碼 |
| 類別 | 能力 | 典型容器 |
|---|---|---|
| 輸入迭代器 | 單向只讀,單遍歷 | istream_iterator |
| 輸出迭代器 | 單向只寫 | ostream_iterator |
| 前向迭代器 | 單向讀寫,多遍歷 | forward_list |
| 雙向迭代器 | 雙向讀寫,++/-- | list, map, set |
| 隨機訪問迭代器 | 雙向 + 算術運算 +n, -n, [] | vector, deque, string, array |
能力遞增:隨機訪問 > 雙向 > 前向 > 輸入/輸出。
vector:動態陣列,隨機訪問,尾部增刪 O(1) 平攤。deque:雙端隊列,首尾增刪 O(1),隨機訪問。list:雙向鏈表,任意位置增刪 O(1),無隨機訪問。forward_list:單向鏈表,極省記憶體。array:固定大小陣列,聚合類型,無擴容。stack:LIFO,底層默認 deque。queue:FIFO,底層默認 deque。priority_queue:最大堆,底層 vector。map/set:鍵唯一,有序。multimap/multiset:鍵可重複。unordered_map/set/multimap/multiset:平均 O(1),無序。emplace_back/emplace 原地構造,避免臨時對象。reserve 預分配 vector/string 容量,減少擴容拷貝。for 配合 auto& 遍歷,避免拷貝。algorithm 標準算法(sort, find_if, transform)優於手寫循環。熟練掌握 string、智能指針、迭代器體系與容器特性,是寫出高效、安全、現代 C++ 代碼的基石。建議以「值語義為主、引用語義為輔、裸指針零使用」為原則進行工程實踐。