必威电竞|足球世界杯竞猜平台

boost
來源:互聯網

Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的發動機之一。 Boost庫由C++標準委員會庫工作組成員發起,其中有些內容有望成為下一代C++標準庫內容。在C++社區中影響甚大,是不折不扣的“準”標準庫。Boost由于其對跨平臺的強調,對標準C++的強調,與編寫平臺無關。大部分boost庫功能的使用只需包括相應頭文件即可,少數(如正則表達式庫,文件系統庫等)需要鏈接庫。但Boost中也有很多是實驗性質的東西,在實際的開發中實用需要謹慎。

boost 在一些播放軟件和音效中指增強,比如Bass Boost,低音增強。

基本介紹

據國外媒 體報道,谷歌于2010年10月26日推出了Boost廣告服務,這是一款為本地商家提供服務的,基于地理位置的產品。舊金山休斯敦芝加哥的用戶現在已經可以使用Boost測試版,其他城市隨后也將陸續推出這項服務。 Boost 建立在谷歌地理位置服務Places的基礎上。當用戶搜索本地商家的時候,Boost廣告就會顯示在谷歌搜索結果頁面和谷歌地圖的“贊助商鏈接”中。當查詢詞條與垂直關鍵字(例如,“餐館”)和位置關鍵字(例如,“舊金山”)相吻合時,Boost廣告就會出現。

廣告內容包含基本位置信息,如地址、商家名稱和電話號碼,以及消費者關心的一些信息,比如星級、收到的評價數量和地圖標示。

商家可以通過他們的谷歌Places帳戶創建Boost 廣告。初始設置十分簡便,商家唯一需要做的就是設定廣告預算,然后谷歌的廣告算法就會自動管理投放位置和頻率等細節。

Boost庫由Boost社區組織開發、維護。其目的是為C++程序員提供免費、同行審查的、可移植的程序庫。Boost庫可以與C++標準庫完美共同工作,并且為其提供擴展功能。Boost庫使用Boost License來授權使用,根據該協議,商業的非商業的使用都是允許并鼓勵的。

Boost社區建立的初衷之一就是為C++的標準化工作提供可供參考的實現,Boost社區的發起人Dawes本人就是C++標準委員會的成員之一。在Boost庫的開發中,Boost社區也在這個方向上取得了豐碩的成果。在送審的C++標準庫TR1中,有十個Boost庫成為標準庫的候選方案。在更新的TR2中,有更多的Boost庫被加入到其中。從某種意義上來講,Boost庫成為具有實踐意義的準標準庫。

可下載Boost C++ Libraries安裝boost庫。里面有許多具有工業強度的庫,如graph庫。

很多Boost中的庫功能堪稱對語言功能的擴展,其構造用盡精巧的手法,不要貿然的花費時間研讀。Boost另外一面,比如Graph這樣的庫則是具有工業強度,結構良好,非常值得研讀的精品代碼,并且也可以放心的在產品代碼中多多利用。

主要分類

按照功能分類的Boost庫列表

按照實現的功能,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庫:是標準模板庫中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) 函數 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關鍵字的實現。

f) Atomic庫:實現C++11樣式的atomic<>,提供原子數據類型的支持和對這些原子類型的原子操作的支持。

g)Coroutine庫:實現對協程的支持。協程與線程的不同之處在于,協程是基于合作式多任務的,而多線程是基于搶先式多任務的。

h)Lockfree庫:提供對無鎖數據結構的支持。

數學和數字庫

a) Accumulators庫:用于增量計算的累加器的框架

b) Integer庫:提供一組有關整數處理的類

c) Interval庫:處理區間概念的數學問題

d) 數學庫:數學領域的模板類和算法

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號建議,實現編譯期的分數操作

r)Multiprecision庫:提供比C++內置的整數、分數和浮點數精度更高的多精度數值運算功能

s)Odeint庫:用于求解常微分方程的初值問題。

排錯和測試庫

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庫:用簡潔的語法實現對標準模板庫容器賦值或者初始化

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 時間 庫:一個非常全面靈活的日期時間庫

d) Exception庫:針對標準庫中異常類的缺陷進行強化,提供<<操作符重載,可以向異常傳入任意數據

e)Filesystem庫:可移植的文件系統操作庫,可以跨平臺操作目錄、文件,已被TR2接受

f)Flyweight庫:實現享元模式,享元對象不可修改,只能賦值

g) Lexical Cast 庫:用于字符串、整數、浮點數的字面轉換

h) Meta State Machine庫:用于表示統一建模語言2有限狀態機的庫

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號建議所支持的時間功能。

x) Log庫:實現日志功能。

y) Predef庫:提供一批統一兼容探測其他宏的預定義宏。

編譯器問題的變通方案庫

a) Compatibility庫:為不符合標準庫要求的環境提供幫助

b) Config庫:將程序的編譯配置分解為三個部分:平臺、編譯器和標準庫,幫助庫開發者解決特定平臺特定編譯器的兼容問題

常用庫

Regex

正則表達式

Spirit

LL parser framework,用C++代碼直接表達EBNF

Graph

圖組件和算法

Lambda

在調用的地方定義短小匿名的函數對象,很實用的functional功能

concept check

檢查泛型編程中的concept

夢三國2職業聯賽

用模板實現的元編程框架

Thread

可移植的C++多線程

Python

把C++類和函數映射到Python之中

Pool

內存池管理

smart_ptr

5個智能指針,學習智能指針必讀

相關圖書

Boost程序庫完全開發指南:深入C++“準”標準庫

C++11/14高級編程:Boost程序庫探秘(第3版)

Boost程序庫探秘:深度解析C++準標準庫

參考資料 >

谷歌推出本地商家廣告服務Boost.tech.qq.com.2018-12-13

生活家百科家居網