Boost 是 C++ 準標準庫,被譽為「C++ 標準庫的孵化器」。眾多 C++11/14/17/20 標準庫組件(如 shared_ptr、thread、regex、filesystem、variant)均源自 Boost。本文系統梳理 Boost 核心模塊分類、典型應用場景與選型建議,助你快速定位所需工具。
| 大類 | 代表庫 | 核心功能 | 標準化狀態 |
|---|---|---|---|
| 字符串與文本 | lexical_cast | 類型⇄字符串安全轉換(替代 atoi/itoa) | 未入標,但廣泛使用 |
format | 類 printf 格式化輸出流(boost::format("%d-%s") % 1 % "abc") | 未入標 | |
regex | Perl 風格正則表達式,支援 Unicode | C++11 std::regex (源自 Boost) | |
spirit | EBNF 文法直接寫解析器(Parser Combinator) | 未入標,編譯器開發利器 | |
tokenizer | 靈活分割字符串(支援分隔符、引號、轉義、正則) | 未入標 | |
| 容器與資料結構 | array | 固定大小陣列,STL 介面 | C++11 std::array |
dynamic_bitset | 運行期大小位集合 | 未入標 | |
multi_array | 多維陣列容器(支援切片、視圖) | 未入標 | |
graph | 圖論算法(BFS、DFS、最短路徑、拓撲排序) | 未入標 | |
circular_buffer | 環形緩衝區 | 未入標 | |
| 智慧指標與記憶體 | smart_ptr | shared_ptr, weak_ptr, intrusive_ptr, scoped_ptr | C++11 std::shared_ptr 等 |
pool | 記憶體池(快速分配、減少碎片) | 未入標 | |
ptr_container | 擁有指針所有權的容器(自動刪除元素) | 未入標 | |
| 函數式與泛型編程 | function | 通用可調用物件包裝器 | C++11 std::function |
bind/lambda | 函數綁定、Lambda 輔助(C++11 前) | C++11 std::bind, Lambda | |
mpl/fusion | 模板元編程、異構元組元編程 | 部分入標(std::tuple, std::integral_constant) | |
| 並發與同步 | thread | 可移植執行緒封裝(基於 pthreads/Win32 API) | C++11 std::thread |
atomic/lockfree | 原子操作、無鎖資料結構 | C++11 std::atomic | |
asio | 異步 I/O、網路編程(Proactor 模式) | C++17 std::net (TS), C++26 擬入標 | |
| 數學與數值 | multiprecision | 任意精度整數/浮點/有理數 | 未入標 |
random | 現代隨機數引擎與分佈 | C++11 <random> | |
math/constants | 高精度數學常數(π, e 等) | C++20 std::numbers | |
| 工具與診斷 | test | 單元測試框架(支援自動註冊、XML 輸出) | 未入標 |
static_assert | 編譯期斷言(C++11 前) | C++11 static_assert | |
timer/progress | 高精度計時器、進度條顯示 | 未入標 | |
| 跨語言與序列化 | python | C++⇄Python 無縫綁定(類、函數、模組暴露) | 未入標 |
serialization | 物件序列化(文本/二進制/XML/可移植二進制) | 未入標 | |
property_tree | 屬性樹配置解析(INI, JSON, XML, INFO) | 未入標 | |
| 實用小工具 | noncopyable | 繼承即禁用拷貝(C++11 =delete 前神器) | C++11 刪除函數替代 |
compressed_pair | 空基類優化 (EBO) 的 pair | 標準庫內部實現細節 | |
tribool/optional | 三態邏輯、可選值(C++17 std::optional) | C++17 std::optional |
boost::lexical_cast<int>("42") 拋出異常於失敗,比 stoi 更安全。boost::format("%.2f%%") % 99.5 兼具 printf 簡潔與流類型安全。boost::regex re("\\d{4}-\\d{2}"); boost::regex_match(s, re); ICU 級 Unicode 支援。boost::program_options 處理選項、配置文件、環境變數統一入口。boost::filesystem(C++17 入標 std::filesystem)路徑操作、遍歷、權限。boost::asio::io_context + async_read/write 構建高併發服務器。BOOST_AUTO_TEST_CASE 零樣板代碼,CI 集成友好。boost::property_tree::read_json 統一訪問 JSON/INI/XML。smart_ptr, function, algorithm 等)僅需包含頭文件,無需鏈接。regex, thread, filesystem, serialization, test, python, locale, date_time, graph, regex, wave 等需鏈接 libboost_xxx。find_package(Boost REQUIRED COMPONENTS filesystem thread regex) + target_link_libraries(${PROJECT_NAME} Boost::boost)。using namespace boost;,精確引用 boost::shared_ptr 或 namespace bs = boost::system;。#include <boost/xxx.hpp> 精確包含,啟用預編譯頭(PCH),考慮模組化構建。filesystem, optional, variant, any, string_view 等已入標,優先使用 std:: 版本減少依賴。Boost 是 C++ 開發者的瑞士軍刀。掌握其核心模塊分類、高頻庫用法與依賴管理,能讓你在面對複雜工程問題時,迅速調用成熟、高效、可移植的解決方案。隨著 C++ 標準演進,Boost 繼續扮演「創新前哨」角色,值得持續關注。