C++ Boost庫分類總結
阿新 • • 發佈:2019-01-11
按照實現的功能,Boost可為大致歸入以下20個分類,在下面的分類中,有些庫同時歸入幾種類別。
字串和文字處理庫
a) Conversion庫:對C++型別轉換的增強,提供更強的型別安全轉換、更高效的型別安全保護、進行範圍檢查的數值轉換和詞法轉換。
b) Format庫:實現類似printf的格式化物件,可以把引數格式化到一個字串,而且是完全型別安全的。
c) IOStream庫 :擴充套件C++標準庫流處理,建立一個流處理框架。
d) Lexical Cast庫:用於字串、整數、浮點數的字面轉換。
e) Regex 庫:正則表示式,已經被TR1所接受。
f) Spirit庫:基於EBNF正規化的LL解析器框架
g) String Algo庫:一組與字串相關的演算法
h) Tokenizer庫:把字串拆成一組記號的方法
i) Wave庫:使用spirit庫開發的一個完全符合C/C++標準的前處理器
j) Xpressive 庫:無需編譯即可使用的正則表示式庫
容器庫
a) Array 庫:對C語言風格的陣列進行包裝
b) Bimap 庫:雙向對映結構庫
c) Circular Buffer 庫:實現迴圈緩衝區的資料結構
d) Disjoint Sets庫 :實現不相交集的庫
e) Dynamic Bitset 庫:支援執行時調整容器大小的位集合
f) GIL 庫:通用影象庫
g) Graph 庫:處理圖結構的庫
h) ICL 庫:區間容器庫,處理區間集合和對映
i) Intrusive 庫:侵入式容器和演算法
j) Multi-Array 庫:多維容器
k) Multi-Index 庫:實現具有多個STL相容索引的容器
l) Pointer Container 庫:容納指標的容器
m) Property Map 庫:提供鍵/值對映的屬性概念定義
n) Property Tree 庫:儲存了多個屬性值的樹形資料結構
o) Unordered 庫:雜湊容器,相當於hash_xxx
p) Variant 庫:簡單地說,就是持有string, vector等複雜型別的聯合體
迭代器庫
a) GIL 庫:通用影象庫
b) Graph 庫:處理圖結構的庫
c) Iterators 庫:為建立新的迭代器提供框架
d) Operators 庫:允許使用者在自己的類裡僅定義少量的操作符,就可方便地自動生成其他操作符過載,而且保證正確的語義實現
e) Tokenizer 庫:把字串拆成一組記號的方法
演算法庫
a) Foreach庫:容器遍歷演算法
b) GIL庫:通用影象庫
c) Graph庫:處理圖結構的庫
d) Min-Max庫:可在同一次操作中同時得到最大值和最小值
e) Range庫:一組關於範圍的概念和實用程式
f) String Algo庫:可在不使用正則表示式的情況下處理大多數字符串相關演算法操作
g) Utility庫:小工具的集合
函式物件和高階程式設計庫
a) Bind庫:繫結器的泛化,已被收入TR1
b) Function庫:實現一個通用的回撥機制,已被收入TR1
c) Functional庫:介面卡的增強版本
d) Functional/Factory庫:用於實現靜態和動態的工廠模式
e) Functional/Forward庫:用於接受任何型別的引數
f) Functional/Hash庫:實現了TR1中的雜湊函式
g) Lambda庫:Lambda表示式,即未命名函式
h) Member Function庫:是STL中mem_fun和mem_fun_ref的擴充套件
i) Ref庫:包裝了對一個物件的引用,已被收入TR1
j) Result Of庫:用於確定一個呼叫表示式的返回型別,已被收入TR1
k) Signals庫:實現執行緒安全的觀察者模式
l) Signals2庫:基於Signal的另一種實現
m) Utility庫:小工具的集合
n) Phoenix庫:實現在C++中的函數語言程式設計。
泛型程式設計庫
a) Call Traits庫:封裝可能是最好的函式傳參方式
b) Concept Check庫:用來檢查是否符合某個概念
c) Enable If庫:允許模板函式或模板類在偏特化時僅針對某些特定型別有效
d) Function Types庫:提供對函式、函式指標、函式引用和成員指標等型別進行分類分解和合成的功能
e) GIL庫:通用影象庫
f) In Place Factory, Typed In Place Factory庫:工廠模式的一種實現
g) Operators庫:允許使用者在自己的類裡僅定義少量的操作符,就可方便地自動生成其他操作符過載,而且保證正確的語義實現
h) Property Map庫:提供鍵值對映的屬性概念定義
i) Static Assert庫:把斷言的診斷時刻由執行期提前到編譯期,讓編譯器檢查可能發生的錯誤
j) Type Traits庫:在編譯時確定型別是否具有某些特徵
k) TTI庫:實現型別萃取的反射功能。
模板超程式設計
a) Fusion庫:提供基於tuple的編譯期容器和演算法
b) MPL庫:模板超程式設計框架
c) Proto庫:構建專用領域嵌入式語言
d) Static Assert庫:把斷言的診斷時刻由執行期提前到編譯期,讓編譯器檢查可能發生的錯誤
e) Type Traits庫:在編譯時確定型別是否具有某些特徵
預處理超程式設計庫
a) Preprocessors庫:提供預處理超程式設計工具
併發程式設計庫
a) Asio庫:基於作業系統提供的非同步機制,採用前攝設計模式實現了可移植的非同步IO操作
b) Interprocess庫:實現了可移植的程序間通訊功能,包括共享記憶體、記憶體對映檔案、訊號量、檔案鎖、訊息佇列等
c) MPI庫:用於高效能的分散式並行開發
d) Thread庫:為C++增加執行緒處理能力,支援Windows和POSIX執行緒
e) Context庫:提供了在單個執行緒上的協同式多工處理的支援。該庫可以用於實現使用者級的多工處理的機制,比如說協程coroutines,使用者級協作執行緒或者類似於C#語言中yield關鍵字的實現。[1]
f) Atomic庫:實現C++11樣式的atomic<>,提供原子資料型別的支援和對這些原子型別的原子操作的支援。
g)Coroutine庫:實現對協程的支援。協程與執行緒的不同之處在於,協程是基於合作式多工的,而多執行緒是基於搶先式多工的。
h)Lockfree庫:提供對無鎖資料結構的支援。
數學和數字庫
a) Accumulators庫:用於增量計算的累加器的框架
b) Integer庫:提供一組有關整數處理的類
c) Interval庫:處理區間概念的數學問題
d) Math庫:數學領域的模板類和演算法
e) Math Common Factor庫:用於支援最大公約數和最小公倍數
f) Math Octonion庫 :用於支援八元數
g) Math Quaternion庫:用於支援四元數
h) Math/Special Functions庫:數學上一些常用的函式
i) Math/Statistical Distributions庫:用於單變數統計分佈操作
j) Multi-Array庫:多維容器
k) Numeric Conversion庫:用於安全數字轉換的一組函式
l) Operators庫:允許使用者在自己的類裡僅定義少量的操作符,就可方便地自動生成其他操作符過載,而且保證正確的語義實現
m) Random庫:專注於偽隨機數的實現,有多種演算法可以產生高質量的偽隨機數
n) Rational庫:實現了沒有精度損失的有理數
o) uBLAS庫:用於線性代數領域的數學庫
p) Geometry庫:用於解決幾何問題的概念、原語和演算法。
q) Ratio庫:根據C++ 0x標準N2661號建議[2] ,實現編譯期的分數操作。
r)Multiprecision庫:提供比C++內建的整數、分數和浮點數精度更高的多精度數值運算功能。[3]
s)Odeint庫:用於求解常微分方程的初值問題。[4]
排錯和測試庫
a) Concept Check庫 :用來檢查是否符合某個概念
b) Static Assert庫 :把斷言的診斷時刻由執行期提前到編譯期,讓編譯器檢查可能發生的錯誤
c) Test庫:提供了一個用於單元測試的基於命令列介面的測試套件
資料結構庫
a) Any庫:支援對任意型別的值進行型別安全的存取
b) Bimap庫:雙向對映結構庫
c) Compressed Pair庫:優化的對pair物件的儲存
d) Fusion庫:提供基於tuple的編譯期容器和演算法
e) ICL庫:區間容器庫,處理區間集合和對映
f) Multi-Index庫:為底層的容器提供多個索引
g) Pointer Container庫:容納指標的容器
h) Property Tree庫:儲存了多個屬性值的樹形資料結構
i) Tuple庫:元組,已被TR1接受
j) Uuid庫:用於表示和生成UUID
k) Variant庫:有類別的泛型聯合類
l) Heap庫:對std::priority_queue擴充套件,實現優先順序佇列。
m) Type Erasure: 實現執行時的多型。
影象處理庫
a) GIL庫:通用影象庫
輸入輸出庫
a) Assign庫:用簡潔的語法實現對STL容器賦值或者初始化
b) Format庫:實現類似printf的格式化物件,可以把引數格式化到一個字串,而且是完全型別安全的
c) IO State Savers庫:用來儲存流的當前狀態,自動恢復流的狀態等
d) IOStreams庫:擴充套件C++標準庫流處理,建立一個流處理框架
e) Program Options庫:提供強大的命令列引數處理功能
f) Serialization庫:實現C++資料結構的持久化
跨語言混合程式設計庫
a) Python庫:用於實現Python和C++物件的無縫介面和混合程式設計
記憶體管理庫
a) Pool庫:基於簡單分隔儲存思想實現了一個快速、緊湊的記憶體池庫
b) Smart Ptr庫:智慧指標
c) Utility庫:小工具的集合
解析庫
a) Spirit庫:基於EBNF正規化的LL解析器框架
程式設計介面庫
a) Function庫:實現一個通用的回撥機制,已被收入TR1
b) Parameter庫:提供使用引數名來指定函式引數的機制
綜合類庫
a) Compressed Pair庫:優化的對pair物件的儲存
b) CRC庫:實現了迴圈冗餘校驗碼功能
c) Date Time 庫:一個非常全面靈活的日期時間庫
d) Exception庫:針對標準庫中異常類的缺陷進行強化,提供<<操作符過載,可以向異常傳入任意資料
e) Filesystem庫:可移植的檔案系統操作庫,可以跨平臺操作目錄、檔案,已被TR2接受
f) Flyweight 庫:實現享元模式,享元物件不可修改,只能賦值
g) Lexical Cast 庫:用於字串、整數、浮點數的字面轉換
h) Meta State Machine庫:用於表示UML2有限狀態機的庫
i) Numeric Conversion 庫:用於安全數字轉換的一組函式
j) Optional 庫:使用容器的語義,包裝了可能產生無效值的物件,實現了未初始化的概念
k) Polygon 庫:處理平面多邊形的一些演算法
l) Program Options庫:提供強大的命令列引數處理功能
m) Scope Exit庫:使用preprocessor庫的預處理技術實現在退出作用域時資源自動釋放
n) Statechart庫:提供有限自動狀態機框架
o) Swap庫:為交換兩個變數的值提供便捷方法
p) System庫:使用輕量級的物件封裝作業系統底層的錯誤程式碼和錯誤資訊,已被TR2接受
q) Timer庫:提供簡易的度量時間和進度顯示功能,可以用於效能測試等需要計時的任務
r) Tribool庫:三態布林邏輯值,在true和false之外引入indeterminate不確定狀態
s) Typeof庫:模擬C++0x新增加的typeof和auto關鍵字,以減輕變數型別宣告的工作,簡化程式碼
t) Units庫:實現了物理學的量綱處理
u) Utility庫:小工具集合
v) Value Initialized庫:用於保證變數在宣告時被正確初始化
w) Chrono庫:實現了C++ 0x標準中N2661號建議[2] 所支援的時間功能。
x) Log庫:實現日誌功能。
y) Predef庫:提供一批統一相容探測其他巨集的預定義巨集。[5]
編譯器問題的變通方案庫
a) Compatibility庫:為不符合標準庫要求的環境提供幫助
b) Config庫:將程式的編譯配置分解為三個部分:平臺、編譯器和標準庫,幫助庫開發者解決特定平臺特定編譯器的相容問題
字串和文字處理庫
a) Conversion庫:對C++型別轉換的增強,提供更強的型別安全轉換、更高效的型別安全保護、進行範圍檢查的數值轉換和詞法轉換。
b) Format庫:實現類似printf的格式化物件,可以把引數格式化到一個字串,而且是完全型別安全的。
c) IOStream庫 :擴充套件C++標準庫流處理,建立一個流處理框架。
d) Lexical Cast庫:用於字串、整數、浮點數的字面轉換。
e) Regex 庫:正則表示式,已經被TR1所接受。
f) Spirit庫:基於EBNF正規化的LL解析器框架
g) String Algo庫:一組與字串相關的演算法
h) Tokenizer庫:把字串拆成一組記號的方法
i) Wave庫:使用spirit庫開發的一個完全符合C/C++標準的前處理器
j) Xpressive 庫:無需編譯即可使用的正則表示式庫
容器庫
a) Array 庫:對C語言風格的陣列進行包裝
b) Bimap 庫:雙向對映結構庫
c) Circular Buffer 庫:實現迴圈緩衝區的資料結構
d) Disjoint Sets庫 :實現不相交集的庫
e) Dynamic Bitset 庫:支援執行時調整容器大小的位集合
f) GIL 庫:通用影象庫
g) Graph 庫:處理圖結構的庫
h) ICL 庫:區間容器庫,處理區間集合和對映
i) Intrusive 庫:侵入式容器和演算法
j) Multi-Array 庫:多維容器
k) Multi-Index 庫:實現具有多個STL相容索引的容器
l) Pointer Container 庫:容納指標的容器
m) Property Map 庫:提供鍵/值對映的屬性概念定義
n) Property Tree 庫:儲存了多個屬性值的樹形資料結構
o) Unordered 庫:雜湊容器,相當於hash_xxx
p) Variant 庫:簡單地說,就是持有string, vector等複雜型別的聯合體
迭代器庫
a) GIL 庫:通用影象庫
b) Graph 庫:處理圖結構的庫
c) Iterators 庫:為建立新的迭代器提供框架
d) Operators 庫:允許使用者在自己的類裡僅定義少量的操作符,就可方便地自動生成其他操作符過載,而且保證正確的語義實現
e) Tokenizer 庫:把字串拆成一組記號的方法
演算法庫
a) Foreach庫:容器遍歷演算法
b) GIL庫:通用影象庫
c) Graph庫:處理圖結構的庫
d) Min-Max庫:可在同一次操作中同時得到最大值和最小值
e) Range庫:一組關於範圍的概念和實用程式
f) String Algo庫:可在不使用正則表示式的情況下處理大多數字符串相關演算法操作
g) Utility庫:小工具的集合
函式物件和高階程式設計庫
a) Bind庫:繫結器的泛化,已被收入TR1
b) Function庫:實現一個通用的回撥機制,已被收入TR1
c) Functional庫:介面卡的增強版本
d) Functional/Factory庫:用於實現靜態和動態的工廠模式
e) Functional/Forward庫:用於接受任何型別的引數
f) Functional/Hash庫:實現了TR1中的雜湊函式
g) Lambda庫:Lambda表示式,即未命名函式
h) Member Function庫:是STL中mem_fun和mem_fun_ref的擴充套件
i) Ref庫:包裝了對一個物件的引用,已被收入TR1
j) Result Of庫:用於確定一個呼叫表示式的返回型別,已被收入TR1
k) Signals庫:實現執行緒安全的觀察者模式
l) Signals2庫:基於Signal的另一種實現
m) Utility庫:小工具的集合
n) Phoenix庫:實現在C++中的函數語言程式設計。
泛型程式設計庫
a) Call Traits庫:封裝可能是最好的函式傳參方式
b) Concept Check庫:用來檢查是否符合某個概念
c) Enable If庫:允許模板函式或模板類在偏特化時僅針對某些特定型別有效
d) Function Types庫:提供對函式、函式指標、函式引用和成員指標等型別進行分類分解和合成的功能
e) GIL庫:通用影象庫
f) In Place Factory, Typed In Place Factory庫:工廠模式的一種實現
g) Operators庫:允許使用者在自己的類裡僅定義少量的操作符,就可方便地自動生成其他操作符過載,而且保證正確的語義實現
h) Property Map庫:提供鍵值對映的屬性概念定義
i) Static Assert庫:把斷言的診斷時刻由執行期提前到編譯期,讓編譯器檢查可能發生的錯誤
j) Type Traits庫:在編譯時確定型別是否具有某些特徵
k) TTI庫:實現型別萃取的反射功能。
模板超程式設計
a) Fusion庫:提供基於tuple的編譯期容器和演算法
b) MPL庫:模板超程式設計框架
c) Proto庫:構建專用領域嵌入式語言
d) Static Assert庫:把斷言的診斷時刻由執行期提前到編譯期,讓編譯器檢查可能發生的錯誤
e) Type Traits庫:在編譯時確定型別是否具有某些特徵
預處理超程式設計庫
a) Preprocessors庫:提供預處理超程式設計工具
併發程式設計庫
a) Asio庫:基於作業系統提供的非同步機制,採用前攝設計模式實現了可移植的非同步IO操作
b) Interprocess庫:實現了可移植的程序間通訊功能,包括共享記憶體、記憶體對映檔案、訊號量、檔案鎖、訊息佇列等
c) MPI庫:用於高效能的分散式並行開發
d) Thread庫:為C++增加執行緒處理能力,支援Windows和POSIX執行緒
e) Context庫:提供了在單個執行緒上的協同式多工處理的支援。該庫可以用於實現使用者級的多工處理的機制,比如說協程coroutines,使用者級協作執行緒或者類似於C#語言中yield關鍵字的實現。[1]
f) Atomic庫:實現C++11樣式的atomic<>,提供原子資料型別的支援和對這些原子型別的原子操作的支援。
g)Coroutine庫:實現對協程的支援。協程與執行緒的不同之處在於,協程是基於合作式多工的,而多執行緒是基於搶先式多工的。
h)Lockfree庫:提供對無鎖資料結構的支援。
數學和數字庫
a) Accumulators庫:用於增量計算的累加器的框架
b) Integer庫:提供一組有關整數處理的類
c) Interval庫:處理區間概念的數學問題
d) Math庫:數學領域的模板類和演算法
e) Math Common Factor庫:用於支援最大公約數和最小公倍數
f) Math Octonion庫 :用於支援八元數
g) Math Quaternion庫:用於支援四元數
h) Math/Special Functions庫:數學上一些常用的函式
i) Math/Statistical Distributions庫:用於單變數統計分佈操作
j) Multi-Array庫:多維容器
k) Numeric Conversion庫:用於安全數字轉換的一組函式
l) Operators庫:允許使用者在自己的類裡僅定義少量的操作符,就可方便地自動生成其他操作符過載,而且保證正確的語義實現
m) Random庫:專注於偽隨機數的實現,有多種演算法可以產生高質量的偽隨機數
n) Rational庫:實現了沒有精度損失的有理數
o) uBLAS庫:用於線性代數領域的數學庫
p) Geometry庫:用於解決幾何問題的概念、原語和演算法。
q) Ratio庫:根據C++ 0x標準N2661號建議[2] ,實現編譯期的分數操作。
r)Multiprecision庫:提供比C++內建的整數、分數和浮點數精度更高的多精度數值運算功能。[3]
s)Odeint庫:用於求解常微分方程的初值問題。[4]
排錯和測試庫
a) Concept Check庫 :用來檢查是否符合某個概念
b) Static Assert庫 :把斷言的診斷時刻由執行期提前到編譯期,讓編譯器檢查可能發生的錯誤
c) Test庫:提供了一個用於單元測試的基於命令列介面的測試套件
資料結構庫
a) Any庫:支援對任意型別的值進行型別安全的存取
b) Bimap庫:雙向對映結構庫
c) Compressed Pair庫:優化的對pair物件的儲存
d) Fusion庫:提供基於tuple的編譯期容器和演算法
e) ICL庫:區間容器庫,處理區間集合和對映
f) Multi-Index庫:為底層的容器提供多個索引
g) Pointer Container庫:容納指標的容器
h) Property Tree庫:儲存了多個屬性值的樹形資料結構
i) Tuple庫:元組,已被TR1接受
j) Uuid庫:用於表示和生成UUID
k) Variant庫:有類別的泛型聯合類
l) Heap庫:對std::priority_queue擴充套件,實現優先順序佇列。
m) Type Erasure: 實現執行時的多型。
影象處理庫
a) GIL庫:通用影象庫
輸入輸出庫
a) Assign庫:用簡潔的語法實現對STL容器賦值或者初始化
b) Format庫:實現類似printf的格式化物件,可以把引數格式化到一個字串,而且是完全型別安全的
c) IO State Savers庫:用來儲存流的當前狀態,自動恢復流的狀態等
d) IOStreams庫:擴充套件C++標準庫流處理,建立一個流處理框架
e) Program Options庫:提供強大的命令列引數處理功能
f) Serialization庫:實現C++資料結構的持久化
跨語言混合程式設計庫
a) Python庫:用於實現Python和C++物件的無縫介面和混合程式設計
記憶體管理庫
a) Pool庫:基於簡單分隔儲存思想實現了一個快速、緊湊的記憶體池庫
b) Smart Ptr庫:智慧指標
c) Utility庫:小工具的集合
解析庫
a) Spirit庫:基於EBNF正規化的LL解析器框架
程式設計介面庫
a) Function庫:實現一個通用的回撥機制,已被收入TR1
b) Parameter庫:提供使用引數名來指定函式引數的機制
綜合類庫
a) Compressed Pair庫:優化的對pair物件的儲存
b) CRC庫:實現了迴圈冗餘校驗碼功能
c) Date Time 庫:一個非常全面靈活的日期時間庫
d) Exception庫:針對標準庫中異常類的缺陷進行強化,提供<<操作符過載,可以向異常傳入任意資料
e) Filesystem庫:可移植的檔案系統操作庫,可以跨平臺操作目錄、檔案,已被TR2接受
f) Flyweight 庫:實現享元模式,享元物件不可修改,只能賦值
g) Lexical Cast 庫:用於字串、整數、浮點數的字面轉換
h) Meta State Machine庫:用於表示UML2有限狀態機的庫
i) Numeric Conversion 庫:用於安全數字轉換的一組函式
j) Optional 庫:使用容器的語義,包裝了可能產生無效值的物件,實現了未初始化的概念
k) Polygon 庫:處理平面多邊形的一些演算法
l) Program Options庫:提供強大的命令列引數處理功能
m) Scope Exit庫:使用preprocessor庫的預處理技術實現在退出作用域時資源自動釋放
n) Statechart庫:提供有限自動狀態機框架
o) Swap庫:為交換兩個變數的值提供便捷方法
p) System庫:使用輕量級的物件封裝作業系統底層的錯誤程式碼和錯誤資訊,已被TR2接受
q) Timer庫:提供簡易的度量時間和進度顯示功能,可以用於效能測試等需要計時的任務
r) Tribool庫:三態布林邏輯值,在true和false之外引入indeterminate不確定狀態
s) Typeof庫:模擬C++0x新增加的typeof和auto關鍵字,以減輕變數型別宣告的工作,簡化程式碼
t) Units庫:實現了物理學的量綱處理
u) Utility庫:小工具集合
v) Value Initialized庫:用於保證變數在宣告時被正確初始化
w) Chrono庫:實現了C++ 0x標準中N2661號建議[2] 所支援的時間功能。
x) Log庫:實現日誌功能。
y) Predef庫:提供一批統一相容探測其他巨集的預定義巨集。[5]
編譯器問題的變通方案庫
a) Compatibility庫:為不符合標準庫要求的環境提供幫助
b) Config庫:將程式的編譯配置分解為三個部分:平臺、編譯器和標準庫,幫助庫開發者解決特定平臺特定編譯器的相容問題