| 組件 | 核心價值 | 效能承諾 |
| 容器 | vector, map, unordered_map 等統一介面 | 複雜度保證 (O(1) 存取, O(log n) 查找) |
| 演算法 | sort, find_if, transform 等 100+ 通用演算法 | 最優複雜度、內聯優化、無虛函數開銷 |
| 迭代器 | 統一容器與演算法的粘合層 | 零開銷抽象 (指標操作等價) |
| 仿函數 | 狀態化可調用物件,支援演算法參數化 | 內聯展開,比函數指標快 |
| 配接器 | stack, queue, priority_queue | 介面適配,零額外開銷 |
泛型思維範例:排序的優雅
// C 風格:qsort + 比較函數指針 + void* + 類型轉換 + 風險
// C++ STL 風格:
std::vector v = {5, 2, 8, 1, 9};
std::sort(v.begin(), v.end()); // 內部 introsort,無虛函數,完全內聯
// 自定義型別只需實現 operator< 或提供比較仿函數
struct Employee { int id; std::string name; };
std::sort(emps.begin(), emps.end(), [](const Employee& a, const Employee& b){ return a.id < b.id; });
數值計算:標準庫滿足現代即時回應需求
<complex>, <valarray>, <random>, <numeric> (內積、累加、插值)。
- 高效能線性代數建議
Eigen, Blaze, Armadillo (表達式模板零臨時對象)。
工程經驗積累:唯一捷徑
- 多寫: 手寫代碼、重構、除錯、優化、測試。
- 讀源碼: STL 實現 (
bits/std*.h), Boost, LLVM, 數據庫內核, 遊戲引擎。
- 造輪子再拋輪子: 自己實現 vector, string, 智慧指標, 線程池, 協程調度器 → 理解標準庫設計權衡。
- 輸出倒逼輸入: 技術部落格、會議分享、開源貢獻、Code Review。
- 建立知識體系: 從語言特性 → 標準庫 → 系統程式 → 領域專業 → 架構設計。
推薦書籍精選
- 《編程高手箴言》梁肇新 —— 學習心法與耐心。
- 《C++ Primer》第 5 版 —— 現代 C++ 百科全書。
- 《Effective C++》/《More Effective C++》/《Effective STL》梅耶 —— 具體條款即最佳實踐。
- 《C++ 模板完全指南》Vandevoorde/Josuttis —— 模板元編程聖經。
- 《深度探索 C++ 物件模型》Lippman —— 編譯器視角物件佈局。
- 《C++ Concurrency in Action》Williams —— 並發實戰。
「當我們進入 C++ 的前門,經過一段黑暗之路,從後門出來到達光明頂,會體味到『一覽眾山小』的感覺。」
- 上一篇文章: C++ 頭文件設計鐵律:三大合法定義例外、包含防衛與現代模組化遷移指南
- 下一篇文章: 學習 C++ 必須掌握的核心觀念與避坑指南
Copyright ©
程式碼之家 All Rights Reserved