C++ 庫分類導航
C++ 以「庫代替語言擴展」著稱,生態極其豐富。按領域梳理主流成熟庫,助力技術選型。
1. 標準庫實現
- Dinkumware:高質量商業實現,MSVC/BCB 默認採用
- Rogue Wave:早期 BCB 採用,後被替換
- SGI STL:經典參考實現,影響深遠
- STLport:SGI STL 跨平台移植版,廣泛用於嵌入式/舊編譯器
- libc++ (LLVM):現代 C++11/14/17/20 完整支持,Clang 默認
- libstdc++ (GNU):GCC 默認,Linux 發行版標配
- MSVC STL:Microsoft 近年開源,C++20 進度領先
2. 準標準庫:Boost
「C++ 標準庫孵化器」,跨平台、頭文件為主、高質量。核心組件:
| 組件 | 功能 | 標準化進程 |
Boost.Asio | 網絡/異步 I/O | C++20 `std::execution`/`networking` 基礎 |
Boost.Spirit | 解析器組合子 (EBNF→C++) | — |
Boost.Hana | 元編程/異構容器 | C++20 `std::tuple` 增強參考 |
Boost.Fiber | 用戶態協程 | — |
Boost.Process | 進程管理 | — |
Boost.JSON | JSON 解析/序列化 | — |
Boost.Cobalt | C++20 協程封裝 | — |
Smart Ptr | 智能指針早期實現 | C++11 吸收 `shared_ptr`/`unique_ptr` |
Thread | 可移植線程 | C++11 `std::thread` 基礎 |
Regex | 正則表達式 | C++11 `std::regex` 基礎 |
⚠️ 部分組件為實驗性,生產環境需評估穩定性。
3. GUI 框架
| 庫 | 特點 | 授權 | 典型場景 |
| Qt | 全功能、跨平台、QML/Qt Quick、元對象系統、商業支持完善 | LGPL/商業 | 桌面應用、嵌入式、汽車儀表 |
| wxWidgets | 原生外觀、MFC 風格 API、C++ 原生 | LGPL-like | 跨平台桌面、舊 MFC 遷移 |
| GTKmm | GTK C++ 綁定、GNOME 生態 | LGPL | Linux 桌面、GNOME 應用 |
| Dear ImGui | 即時模式、極輕量、工具/調試界面首選 | MIT | 游戲工具、實時可視化、嵌入式 |
| JUCE | 音頻/插件專用、跨平台 GUI | GPL/商業 | DAW 插件、音頻應用 |
| FLTK | 極小、靜態鏈接友好 | LGPL | 輕量嵌入式、教學 |
4. 網絡通信
- Boost.Asio:現代 C++ 網絡標準,Proactor 模式,支援協程
- libuv:Node.js 底層,高性能事件循環,C API
- ZeroMQ / nanomsg:消息隊列模式,多語言,無中心節點
- gRPC / Apache Thrift:RPC 框架,IDL 定義,HTTP/2
- Muduo / netty-cpp:Reactor 模式,C++11 線程池 + Epoll
- Poco Net:POCO 框架網絡模塊,HTTP/SMTP/POP3 封裝
- ACE:重量級、模式化、學習曲線陡峭,老牌電信/航天領域
5. XML/JSON/序列化
| 庫 | 類型 | 特點 |
| RapidJSON | JSON | 極快、SAX/DOM、header-only、C++11 |
| nlohmann/json | JSON | 現代 API、單頭文件、C++11/17/20 |
| pugixml | XML | 快速 DOM、XPath、header-only |
| TinyXML-2 | XML | 簡單、DOM、低內存 |
| Xerces-C++ | XML | 完整 DOM/SAX/Schema、重量級 |
| protobuf / FlatBuffers / Cap'n Proto | 二進制序列化 | Schema 驅動、零拷貝、高性能 RPC |
| cereal / Boost.Serialization | C++ 序列化 | 標準庫類型支持、多格式 |
6. 科學計算與數值庫
- Eigen:頭文件矩陣庫,表達式模板,線性代數/幾何/稀疏矩陣
- Armadillo:語法類 MATLAB,依賴 BLAS/LAPACK
- Blitz++:表達式模板先驅,陣列運算優化
- VTK / ITK:可視化/醫學圖像處理管線
- CGAL:計算幾何算法精確實現
- GSL:GNU 科學庫,C API,統計/插值/ODE
- XTensor:多維數組、廣播、NumPy 風格、Python 綁定
7. 游戲引擎與圖形
| 引擎/庫 | 定位 | 語言/腳本 |
| Unreal Engine | 3A 級、C++ 核心+Blueprints | C++/Blueprints |
| Godot | 開源、輕量、GDScript/C#/C++ | GDScript/C#/C++ |
| Ogre3D | 渲染引擎、非完整游戲框架 | C++ |
| bgfx | 跨平台渲染抽象層 | C99/C++ |
| KlayGE | 國產開源引擎、Python 腳本 | C++/Python |
| Cocos2d-x | 2D/輕量 3D、手游主流 | C++/JS/Lua |
8. 線程與並發
- C++11/17/20 標準庫:`thread`、`mutex`、`condition_variable`、`future`、`atomic`、`shared_mutex`、`semaphore`、`latch`、`barrier`、`execution policies`
- Intel TBB:任務並行、並行容器、流圖、內存分配器
- HPX:分布式 C++ 並行運行時、Active Messages
- Folly:Facebook 基礎設施、`fibers`、`futures`、`MPMC queue`
- moodycamel::ConcurrentQueue:無鎖隊列極致性能
9. 其他實用庫
- fmt / {fmt}:類 Python 格式化,C++20 `std::format` 基礎
- spdlog:極快頭文件日誌庫,支持異步、多目標
- CLI11 / argparse:命令行解析
- GTest / Catch2 / doctest:單元測試框架
- Benchmark / Google Benchmark:微基準測試
- OpenSSL / mbedTLS / Botan:加密/SSL/TLS
- SQLiteCpp / ODB / soci:數據庫訪問
- yaml-cpp / toml++:配置文件解析
- magic_enum:C++17 枚舉反射/字符串轉換
- expected / outcome:錯誤處理單子(C++23 `std::expected` 前身)
選型建議
- **優先標準庫 / C++20/23 新特性**
- **次選 Boost / 成熟頭文件庫**(nlohmann/json, fmt, spdlog, Eigen)
- **領域專用成熟框架**(Qt, gRPC, protobuf, TBB)
- **避免重複造輪子**,但警惕依賴膨脹、ABI 兼容、編譯時間
- **關注授權**:LGPL 動態鏈接、GPL 傳染、商業授權成本