Boost C++ 函式庫

...世界上最受推崇且設計精良的 C++ 函式庫專案之一。 Herb SutterAndrei Alexandrescu,《C++ 程式碼規範

開源程式庫 Boost

Boost 被廣泛應用於各種開源專案,包含應用程式和函式庫。事實上,許多圍繞 Boost 開發的開源函式庫,過去都被認為品質夠高,足以被納入 Boost 的主要程式碼庫中,這個過程無疑將持續到未來。其他函式庫則應用於高度專業化的利基市場,從機率論到天文學,再到質譜分析:無論您的興趣領域為何,您都能在 Boost 中找到有價值的東西。

Algocoders

Algocoders 秉持著「站在巨人的肩膀上,協助人們建立更完善的軟體生態系統」的使命,六年多來一直使用 Boost。

如果沒有 Boost,我們很難基於完善的電腦科學數學基礎,使用現代 C++ 建構我們的框架。Boost 在「使用和擴展 C++11、Boost 及其他技術」方面的開創性努力,激勵我們致力於開發精簡的「膠囊」式小冊子,搭配產業級框架,揭開技術面紗,初步著重於 C++11 的實際應用及其背後的數學基礎。

受到 Boost 的啟發,我們正 tirelessly 地出版一系列書籍(或小冊子),以彌合深奧理論與實務應用之間的差距。初步將著重於 C++11、Boost、Loki、STL、演算法、資料結構、多執行緒、設計模式、gcc、Clang 和 valgrind。

本系列的第一本書是《C++11 演算法基礎,第一卷:使用和擴展 C++11、Boost 及其他技術》(2012 年 12 月出版)

正在編寫的書籍列表

  • 智慧指標:C++ 的技巧與技術:使用和擴展 C++11、Boost 及其他技術
  • C++11 常見問題:使用和擴展 C++11、Boost 及其他技術
  • C++ 的概念與特性:使用和擴展 C++11、Boost 及其他技術

我們幾乎使用了 Boost 中的所有函式庫,包括主幹和分支,尤其是 Spirit、Phoenix、Proto、MPL 和 Fusion。

Adobe 軟體函式庫

Adobe 軟體函式庫 提供了用於在軟體應用程式中建模人機介面外觀和行為的元件。Adobe 軟體函式庫依賴於 Boost 的許多部分,包括 Boost.AnyBoost.BindBoost.FunctionBoost.MPLBoost.OperatorsBoost.RangeBoost.StaticAssertBoost.ThreadBoost.TypeTraits

目前,Boost 和 Adobe 軟體函式庫被應用於大約 30 種 Adobe 產品中。

LyX 文件編輯器

LyX 文件編輯器 是一款先進的開源文件處理器,它鼓勵基於文件結構而非外觀進行寫作。LyX 使用工業級排版引擎 LaTeX 產生高品質、專業的輸出。

LyX 使用了 Boost 的許多部分,包括 ArrayBoost.BindBoost.RegexBoost.TypeTraitsBoost.FunctionBoost.Signals

Code Synthesis Tools CC 開發的 CodeSynthesis XML Schema to C++ 資料繫結編譯器 (XSD)

CodeSynthesis XML Schema to C++ 資料繫結編譯器 (XSD) 是一個開放原始碼、跨平台的 C++ XML 資料繫結實現。它提供 XML 範例規格 (XML Schema),並產生代表給定詞彙的 C++ 類別以及解析和序列化程式碼。您可以使用語義上對應到您的應用程式領域的類型和函數來存取儲存在 XML 中的資料,而不是直接處理 XML 表示形式(例如 DOM 或 SAX)中的元素、屬性及文字。

XSD 使用 Boost 的 Boost.RegexBoost.FileSystem 函式庫。Boost.Regex 用於對檔案、類型和成員名稱執行轉換。Boost.FileSystem 用於擷取和操作 XML Schema include 和 import 路徑。此外,我們正計劃提供一個選項,將 XML Schema 日期和時間類型映射到 Boost Boost.DateTime 函式庫中的 C++ 類型。

CodeShop

我很高興地宣布,位於阿姆斯特丹的 CodeShop 自 2005 年以來一直在其所有專案中使用 Boost(而 CodeShop 成員自 2001 年以來就一直在使用 Boost)。

我們在以下專案中使用了它

OpenZoep

一個開源的 VoIP 堆疊 (xmpp-sip_rtp_(port)audio/codecs),能夠進行電腦對電腦通話和電腦對 PSTN 通話 - 它是一個基於訊息的 SDK,因此您可以編寫自己的 Gtalk 或 Skype ...

Boost 無所不在:從 xmpp 實現 (Boost.FunctionBoost.Asio) 到 codecs-wrapper (Boost.SmartPointers) 等等。Boost 讓程式碼更容易編寫、更有趣、更安全且開發速度更快。Bjam 被用作建構系統。

請參閱 說明trac&svn

Abonja / Whitelabelvideo

線上影片分享平台:您可以在線上上傳和觀看 Flash 影片,同時執行您的電腦用戶端並自動下載所有偏好設定,以便稍後在家觀看

Boost 和 C++ 用於伺服器端工具。Bjam 被用作建構系統。

www.abonja.nlwww.whitelabelvideo.nl(僅限荷蘭語:用於觀看和上傳的 JavaScript SDK - Boost 也用於伺服器端)。

以上和其他專案的程式碼可以純下載或函式庫的形式提供。

程式碼片段解決了從 Windows 註冊表包裝器到更系統化的部分(例如 drm 實現)等「簡單」問題。Boost 無所不在 (__filesystem、Boost.ThreadBoost.AsioBoost.Spirit 等);Boost.Build 被用作建構系統。

CGAL

CGAL 是計算幾何演算法函式庫,一個開源的 C++ 函式庫,提供泛型元件,例如三角剖分、凸包演算法、多邊形的布林運算等等。_「我們目前使用以下 Boost 函式庫:Boost.OperatorsBoost.IteratorBoost.TupleBoost.ConceptCheckBoost.MPLBoost.BindBoost.OptionalBoost.SmartPointers。」_

ALPS

ALPS 是一個開放原始碼專案,旨在開發用於精確模擬量子晶格模型(例如量子磁體、電子系統和玻色-愛因斯坦凝聚態)的程式碼。主要使用的 Boost 函式庫包括:Boost.GraphBoost.RandomBoost.MultiIndexBoost.ProgramOptionsBoost.LexicalCastBoost.SerializationBoost.RegexBoost.TupleBoost.FileSystemBoost.SmartPointersBoost.BindBoost.Functional 以及 Boost.TypeTraits

SmartWin++

SmartWin++ 是一個完全免費的 GUI 函式庫,用於開發 Windows 應用程式。它既免費使用(如同免費啤酒),也享有言論自由(開放原始碼),您可以自由地將 SmartWin++ 用於商業應用程式和開放原始碼應用程式!

Open VRML

Open VRML 是一個免費的跨平台 VRML 執行環境。OpenVRML 的基本發行版包含您可以用來為應用程式添加 VRML 支援的函式庫,以及一個簡單的獨立 VRML 瀏覽器 Lookat。

Bayes++

Bayes++ 是一個開放原始碼函式庫,它代表並實現了澳洲田野機器人中心 (Australian Centre for Field Robotics) 開發的各種用於離散系統貝葉斯濾波的數值演算法。Bayes++ 特别大量使用了 Boost.Ublas 進行矩陣和數值計算。

Kohonen 神經網路函式庫 (KNNL)

Kohonen 神經網路函式庫 是一組用於設計、訓練和使用 Kohonen 網路(自組織映射)的類別和函式。

KNNL 使用 Boost.BindBoost.FunctionBoost.TypeTraitsBoost.ProgramOptions

C++/Tk 函式庫

C++/Tk 函式庫 是一個 Tk GUI 函式庫的開放原始碼 C++ 介面。

GluCat

GluCat 是一個模板類別函式庫,它對實數或複數域上的通用 Clifford 代數進行建模,具有任意維度和任意簽名。

OpenMS

OpenMS 是一個開放原始碼 C++ 函式庫,用於 LC/MS 資料管理、簡化、評估、視覺化、儲存和複雜的統計分析。它可以用於開發與質譜相關的應用程式。

libpdf++

libpdf++ 是一個物件導向的函式庫,用於產生 PDF(可攜式文件格式)檔案。它的設計方式是將文件中的物件直接映射到函式庫中的類別。

Regina

Regina 是一套用於三維流形拓撲學家的數學軟體。它專注於研究三維流形三角剖分,並包含對正常曲面和角度結構的支援。

MetaFS

MetaFS 是一個僅適用於 Linux 的守護行程,它讓您可以使用擴展屬性輕鬆一致地存取檔案資訊(例如 MP3 標籤或 JPEG 的 EXIF 標籤)。它也允許您使用這些資訊執行快速搜尋。MetaFS 具有可擴展性,因此任何人都可以編寫插件來存取新型的中繼資料。

ASN.1 工具

抽象語法標記一(ASN.1)是一種正式語言,用於抽象地描述在廣泛應用程式之間交換的訊息,這些應用程式包括網際網路、智慧網路、行動電話、地對空通訊、電子商務、安全電子服務、互動式電視、智慧交通系統、網路電話等等。

ASN.1 工具 包含兩個部分:一個 ASN.1 編譯器「asnparser」,它將抽象語法編譯成 C++ 檔案,以及一個用於與 asnparser 生成的 C++ 檔案連結的運行時程式庫。它基於 Open H.323 專案的成果開發,旨在滿足 H.450 系列協定的需求。

DGD

DGD(Depression Glass Debug,沮喪玻璃除錯)是一個簡單易用的 C++ ostream 擴展,其目標是產生美觀、易讀且易於理解的追蹤日誌。

FEAR

FEAR 是一個獨立於語言的開源專案,它為在逼真的模擬世界中創建真正的人工智慧提供可移植的支援。

XEngine

XEngine 是一個獨立於平台和渲染 API 的 3D 引擎,用於即時視覺化,支援可程式化圖形管線架構,並以 C++ 實現。

Spheral++

Spheral++ 是一個數值工具,用於模擬一組受流體動力學、重力和輻射效應影響的流體或固體材料的演化。Spheral++ 使用 Boost.Python

C++ XML 物件

C++ XML 物件 是一個用於將 C++ 物件階層持久化到 XML 和從 XML 持久化的框架。

HippoDraw

HippoDraw 提供了一個高度互動的資料分析環境。HippoDraw 使用 Boost.Python

Orocos

Orocos 機器人控制軟體應用程式框架.

ECell

E-Cell 專案 是一個國際研究專案,旨在開發必要的理論支援、技術和軟體平台,以實現精確的全細胞模擬。

VCS Made Easy

VCS Made Easy,簡稱 vcsme,是一個工具程式,其主要目的是簡化由版本控制系統(例如眾所周知的 CVS 或 Subversion)管理的檔案樹的維護。簡而言之,它可以透過單個簡單的命令自動將所有這些目錄更新到最新狀態。

「使用了以下 Boost 程式庫:Boost.FormatBoost.SmartPointersBoost.UtilityBoost.FileSystem。」

Monotone

Monotone 是一個免費的分散式版本控制系統。它提供了一個簡單的單檔案交易版本儲存庫,具有完全離線操作和高效的點對點同步協定。它理解歷史敏感合併、輕量級分支、整合程式碼審查和第三方測試。它使用加密版本命名和用戶端 RSA 憑證。它具有良好的國際化支援,沒有外部依賴性,可在 Linux、Solaris、OSX、Windows 和其他 Unix 系統上運行,並在 GNU GPL 授權下發布。

「以下使用了這些 Boost 函式庫:Boost.DateTimeBoost.FileSystemBoost.ConversionBoost.OptionalBoost.RandomBoost.RegexBoost.SmartPointersBoost.StaticAssertBoost.TokenizerBoost.Tuple 以及 Boost.Test。」

Hydranode 引擎

Hydranode 引擎 是一個以插件驅動的 P2P 用戶端引擎,高度依賴 Boost 函式庫。Hydranode 程式碼以 GNU GPL 授權,主要由 Alo Sarv 開發。Hydranode 目前處於 Beta 階段,可在廣泛的平台上運行,包括 Windows、Linux、BSD、Mac OS、Solaris 等。

「Hydranode 引擎和插件高度依賴以下 Boost 函式庫:Boost.BindBoost.FunctionBoost.LambdaBoost.MultiIndexBoost.Signals、Threads、Boost.SmartPointers、Format、Boost.LexicalCast。其他使用的 Boost 函式庫包括 Boost.FileSystemBoost.StringAlgorithmsBoost.DateTimeBoost.ProgramOptionsBoost.SpiritBoost.RandomBoost.TokenizerBoost.TypeTraitsBoost.TriboolBoost.Tuple 以及 Boost.Any。一旦 Boost 1.33 發布,我也期待在 Hydranode 中使用 Boost Iostreams 函式庫。」

「Hydranode 中所有複雜的資料結構都是使用 Boost.MultiIndex 容器實作的,這顯著縮短了開發時間並保持程式碼簡潔。所有文字格式化都使用 Format。 Boost.ThreadBoost.FileSystem 函式庫的可用性讓這些領域的跨平台開發變得更加容易。」

Hugin

使用 hugin,您可以將多張照片拼接成完整的沉浸式全景圖,縫合任何一系列重疊的圖片等等。

Enblend

Enblend 是一款用於合成影像的工具。給定一組以不規則方式重疊的影像,Enblend 會將它們疊加,使影像之間的接縫不可見,或者至少很難看到。

GNU Source-highlight

給定一個原始碼檔案,GNU Source-highlight 會產生一個具有語法高亮的檔案。顏色和樣式(粗體、斜體、底線)可以透過設定檔指定,其他一些選項可以在命令列中指定。輸出格式可以是 HTML、XHTML 和 ANSI 色彩跳脫序列。GNU Source Highlight 是圍繞 Boost.Regex 建構的。

Luabind

Luabind 是一個協助您在 C++ 和 Lua 之間建立繫結的函式庫。它能夠將以 C++ 編寫的函式和類別公開給 Lua 使用。它還提供在 Lua 中定義類別的功能,並讓它們繼承自其他 Lua 類別或 C++ 類別。Lua 類別可以覆蓋其 C++ 基礎類別的虛擬函式。它是針對 Lua 5.0 編寫的,不適用於 Lua 4。

C++/Tcl

C++/Tcl 是一個允許輕鬆整合 C++ 和 Tcl 的函式庫。

Mordor

Mordor 項目是一個高效能的 I/O 函式庫。以 BSD 授權 發行。

NOX

NOX 項目是最早的 OpenFlow 控制器,它有助於在 Linux 上開發快速的 C++ 控制器。NOX 是軟體定義網路生態系統的一部分。具體來說,它是一個用於構建網路控制應用程式的平台。

QuantLib

QuantLib 項目提供了一個全面的軟體框架,用於量化金融。QuantLib 是一個免費/開源的函式庫,用於實際建模、交易和風險管理。使用的 Boost 元件包括 Boost.SmartPointersBoost.IteratorBoost.Test

CBCanaylzer

CBCanaylzer 由 Würzburg 大學生物資訊學系開發。

「CBCAnalyzer(CBC = compensatory base change,補償性鹼基變化)是一個從序列比對創建小型系統發育樹的工具。為了測量序列的距離,會檢測和計算補償性鹼基變化。然後使用 bionj 演算法來構建樹。CBCAnalyzer 可在 Windows、Linux 上使用,並且部分可在 MacOSX 上運行。」

「使用的 Boost 函式庫:Boost.ProgramOptions - 創建非常漂亮的輸出,而且易於擴展和處理。Boost.IteratorBoost.Spirit - 節省了我大量的時間,並使大量的生物檔案格式易於支援,Boost.SharedPointerBoost.Lambda。」

Profdist

Profdist 由 Würzburg 大學生物資訊學系開發。

「Profdist 是一個基於輪廓距離構建大型系統發育樹的工具。輸入的比對數據會通過隨機挑選行來擴展,並使用聚類技術來創建最頻繁子樹的輪廓。迭代方法允許處理大型數據集。目前,該應用程式受到 wxWidgets 品質的很大限制,並且僅適用於 Windows 和 Linux。」

「使用的 Boost 函式庫:Boost.StringAlgorithmsBoost.RefBoost.IteratorBoost.SpiritBoost.SharedPointerBoost.Lambda。」

Yake 引擎

Yake 引擎 是一個以 C++ 編寫的基於元件、物件導向的引擎,主要設計用於 VR 應用程式和遊戲。它抽象了典型的低階和中介軟體 API,並提供各種低、中和應用程式級功能,以及創建和導入內容的工具。

公共部門信用解決方案

公共部門信用解決方案這是一個開源項目,用於模擬主權債務評級,使用蒙特卡羅模擬,其中包括對 Boost.Math 常態分佈和柯西分佈亂數產生器的調用。公共部門信用框架

Python-Ogre

Python-Ogre 是 Ogre 3D 的 Python 綁定 - 一個面向場景的、靈活的 3D 引擎。

Python-Ogre 使用 Boost.Python 將以下函式庫公開給 Python

  • Ogre
  • Newton
  • ODE
  • OgreAL
  • CEGUI
  • OIS