Item 55:熟悉一下Boost
阿新 • • 發佈:2019-01-06
Item 55: Familiarize yourself with Boost.
Boost是一個C++開發者的社群,作為C++標準的試驗場, 收容了很多高質量、開源的、跨平臺、獨立於編譯器的C++庫, 包括許多TR1元件的實現。
Boost是其他C++組織和社群所不能比擬的:
- 與C++標準委員會的親近關係。Boost社群成員和C++標準委員會成員有很大的交集。 多數C++下一代標準都來自於Boost社群。
- 特殊的專案接收流程。首先在郵件列表中提出它,然後開啟整個流程: 討論、優化、重新提交,直到滿意。
Boost社群中的庫千差萬別,較小的庫(比如Convention)除了錯誤處理和跨平臺外只有幾行程式碼; 較大的庫(比如Boost Graph Library、Boost MPL Library
- 字串和文字處理。型別安全的printf、正則表示式、 分詞(tokenizing)、轉換(parsing)。
- 容器。STL風格的固定大小陣列、可變大小的Bitset、多維陣列。
- 函式物件和高階程式設計。比如有趣的Lambda庫:
using namespace boost::lambda;
std::vector<int> v;
std::for_each(v.begin(), v.end(), std::cout<< _1 * 2 + 10 << "\n");
_1 是 Lambda 庫的佔位符,表示當前元素
- 泛型程式設計。包括一套可擴充套件的traits類,見Item 47。
- 模板超程式設計(TMP,見Item 48)。
- 數值計算。包括有理數、八元數、最大公約數、最小公倍數等。
- 正確性和測試。隱式模板介面的形式化和測試驅動程式設計。
- 資料結構。包括型別安全的聯合體、元組。
- 跨語言支援。比如C++和Python提供無縫互操作性的庫。
- 記憶體。如固定大小記憶體池的分配器。
- 雜項。CRC檢查、時間日期操作、檔案系統遍歷等。
也有一些程式設計領域的東西並不在Boost裡面, 比如GUI開發、資料庫連線等。