Boost簡介

原文連接:  吳豆豆http://www.cnblogs.com/gdutbean/archive/2012/03/30/2425201.html    

                                         Boost庫

Boost庫是爲C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫由Boost社區組織開發、維護。其目的是爲C++程序員提供免費、同行審查的、 可移植的程序庫。Boost庫能夠與C++標準庫完美共同工做,而且爲其提供擴展功能。Boost庫使用Boost License來受權使用,根據該協議,商業的非商業的使用都是容許並鼓勵的。

Boost社區創建的初衷之一就是爲C++的標準化工做提供可供參考的實現,Boost社區的 發起人Dawes本人就是C++標準委員會的成員之一。在Boost庫的開發中,Boost社區也在這個方向上取得了豐碩的成果。在送審的C++標準庫 TR1中,有十個Boost庫成爲標準庫的候選方案。在更新的TR2中,有更多的Boost庫被加入到其中。從某種意義上來說,Boost庫成爲具備實踐 意義的準標準庫。
TR1是ISO/IEC TR 19768, C++ Library Extensions(函式庫擴充)的通常名稱。TR1是一份文件,內容提出了對C++標準函式庫的追加項目。這些追加項目包括了正則表達式、智能指針、 哈希表、隨機數生成器等。TR1本身並不是標準,他是一份草稿文件。然而他所提出的項目頗有可能成爲下次的官方標準。這份文件的目標在於「爲擴充的C++標 準函式庫創建更爲普遍的現成實做品」。   C++ tr1是針對C++標準庫的第一次擴展。即將到來的下一個版本的C++標準c++0x會包括它,以及一些語言自己的擴充。tr1包括你們期待已久的 smart pointer,正則表達式以及其餘一些支持範型編程的東東。草案階段,新增的類和模板的名字空間是std::tr1。
大部分boost庫功能的使用只需包括相應頭文件便可,少數(如正則表達式庫,文件系統庫等)須要連接庫。裏面有許多具備工業強度的庫,如graph庫。   不少Boost中的庫功能堪稱對語言功能的擴展,其構造用盡精巧的手法,不要貿然的花費時間研讀。Boost另一面,好比Graph這樣的庫則是具備工業強度,結構良好,很是值得研讀的精品代碼,而且也能夠放心的在產品代碼中多多利用。 按照實現的功能,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庫:在編譯時肯定類型是否具備某些特徵

模板元編程

  a) Function Types庫:提供對函數、函數指針、函數引用和成員指針等類型進行分類分解和合成的功能   b) Fusion庫:提供基於tuple的編譯期容器和算法   c) MPL庫:模板元編程框架   d) Proto庫:構建專用領域嵌入式語言   e) Static Assert庫:把斷言的診斷時刻由運行期提早到編譯期,讓編譯器檢查可能發生的錯誤   f) Type Traits庫:在編譯時肯定類型是否具備某些特徵

預處理元編程庫

  a) Preprocessors庫:提供預處理元編程工具

併發編程庫

  a) Asio庫:基於操做系統提供的異步機制,採用前攝設計模式實現了可移植的異步IO操做   b) Interprocess庫:實現了可移植的進程間通訊功能,包括共享內存、內存映射文件、信號量、文件鎖、消息隊列等   c) MPI庫:用於高性能的分佈式並行開發   d) Thread庫:爲C++增長線程處理能力,支持Windows和POSIX線程

數學和數字庫

  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號建議 [1] ,實現編譯期的分數操做。

排錯和測試庫

  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庫:有類別的泛型聯合類

圖像處理庫

  a) GIL庫:通用圖像庫

輸入輸出庫

  a) Asio庫:基於操做系統提供的異步機制,採用前攝設計模式實現了可移植的異步IO操做   b) Assign庫:用簡潔的語法實現對STL容器賦值或者初始化   c) Format庫:實現相似printf的格式化對象,能夠把參數格式化到一個字符串,並且是徹底類型安全的   d) IO State Savers庫:用來保存流的當前狀態,自動恢復流的狀態等   e) IOStreams庫:擴展C++標準庫流處理,創建一個流處理框架   f) Program Options庫:提供強大的命令行參數處理功能   g) 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) Conversion庫:對C++類型轉換的加強,提供更強的類型安全轉換、更高效的類型安全保護、進行範圍檢查的數值轉換和詞法轉換   c) CRC庫:實現了循環冗餘校驗碼功能   d) Date Time 庫:一個很是全面靈活的日期時間庫   e) Exception庫:針對標準庫中異常類的缺陷進行強化,提供<<操做符重載,能夠向異常傳入任意數據   f) Filesystem庫:可移植的文件系統操做庫,能夠跨平臺操做目錄、文件,已被TR2接受   g) Flyweight 庫:實現享元模式,享元對象不可修改,只能賦值   h) Lexical Cast 庫:用於字符串、整數、浮點數的字面轉換   i) Meta State Machine庫:用於表示UML2有限狀態機的庫   j) Numeric Conversion 庫:用於安全數字轉換的一組函數   k) Optional 庫:使用容器的語義,包裝了可能產生無效值的對象,實現了未初始化的概念   l) Polygon 庫:處理平面多邊形的一些算法   m) Program Options庫:提供強大的命令行參數處理功能   n) Scope Exit庫:使用preprocessor庫的預處理技術實如今退出做用域時資源自動釋放   o) Statechart庫:提供有限自動狀態機框架   p) Swap庫:爲交換兩個變量的值提供便捷方法   q) System庫:使用輕量級的對象封裝操做系統底層的錯誤代碼和錯誤信息,已被TR2接受   r) Timer庫:提供簡易的度量時間和進度顯示功能,能夠用於性能測試等須要計時的任務   s) Tribool庫:三態布爾邏輯值,在true和false以外引入indeterminate不肯定狀態   t) Typeof庫:模擬C++0x新增長的typeof和auto關鍵字,以減輕變量類型聲明的工做,簡化代碼   u) Units庫:實現了物理學的量綱處理   v) Utility庫:小工具集合   w) Value Initialized庫:用於保證變量在聲明時被正確初始化   x) Chrono庫:實現了C++ 0x標準中N2661號建議 [1] 所支持的時間功能。

編譯器問題的變通方案庫

  a) Compatibility庫:爲不符合標準庫要求的環境提供幫助   b) Config庫:將程序的編譯配置分解爲三個部分:平臺、編譯器和標準庫,幫助庫開發者解決特定平臺特定編譯器的兼容問題
相關文章
相關標籤/搜索