Boost C++ 库

…世界上最受推崇且设计精良的 C++ 库项目之一。 Herb SutterAndrei AlexandrescuC++ 编码标准

开源 Boost

Boost 被用于各种开源项目,包括应用程序和库。事实上,许多围绕 Boost 开发的开源库在过去被认为质量足够高,可以被吸收到 Boost 的主源代码树中,这一过程无疑将持续到未来。其他一些库则位于高度专业化的利基市场,涵盖从概率论到天文学,再到质谱法:无论你的兴趣领域是什么,你都会在 Boost 中找到有价值的东西。

Algocoders

Algocoders 自 6 年多前就开始使用 Boost,其使命是通过站在巨人的肩膀上帮助人们构建更好的软件生态系统。

如果没有 Boost,我们可能很难在现代 C++ 中使用计算机科学的扎实数学基础来构建我们的框架。正是 Boost 在“使用和扩展 C++11、Boost 及超越”方面的开拓性工作,激励我们致力于以小型手册的形式开发子弹大小的胶囊,其中包含工业级框架,以揭开面纱,最初重点关注 C++11 的实际使用,以及其背后的数学基础。

在 Boost 的鼓舞下,我们正在努力出版一系列书籍(或手册),以弥合深奥和街头的差距。最初的重点将放在 C++11、Boost、Loki、STL、算法、数据结构、多线程、设计模式、gcc、Clang、valgrind 上。

本系列的第一本书是《C++11 算法基础,卷 1:使用和扩展 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

CodeSynthesis XML 架构到 C++ 数据绑定编译器 (XSD) 由 Code Synthesis Tools CC 开发

CodeSynthesis XML 架构到 C++ 数据绑定编译器 (XSD)》是一款开源、跨平台的 C++ XML 数据绑定实现。提供 XML 实例规范(XML 架构)后,它会生成表示给定词汇表的 C++ 类,以及解析和序列化代码。然后,你可以使用在语义上对应于你的应用程序领域的类型和函数来访问存储在 XML 中的数据,而不必直接处理 XML 的元素、属性和文本,例如 DOM 或 SAX。

XSD 使用 Boost 中的 Boost.RegexBoost.FileSystem 库。 Boost.Regex 用于对文件、类型和成员名称进行转换。 Boost.FileSystem 用于捕获和操作 XML 架构的包含和导入路径。此外,我们计划提供一种可选的映射,将 XML 架构的日期和时间类型映射到 Boost Boost.DateTime 库中的 C++ 类型。

CodeShop

我很高兴地宣布,总部位于阿姆斯特丹的 CodeShop 自 2005 年以来在其所有项目中一直使用 Boost(CodeShop 成员自 2001 年以来一直使用 Boost)。

我们将其用于以下项目:

OpenZoep

一个开源的 VoIP 堆栈 (xmpp-sip*rtp*(端口)音频/编解码器),能够进行 PC 对 PC 通话和 PC 对 PSTN 通话——它是一个基于消息的 SDK,因此你可以编写自己的 Gtalk 或 Skype……

Boost 在各个地方都使用,从 XMPP 实现 (Boost.FunctionBoost.Asio) 到编解码器包装器 (Boost.SmartPointers)——以及更多。Boost 使代码更容易、更有趣、更安全、更快速地开发。Bjam 被用作构建系统。

查看 描述trac&svn

Abonja / Whitelabelvideo

在线视频共享平台:你可以上传和观看 Flash 视频,但同时也可以运行你的 PC 客户端并自动下载所有你的偏好,以便稍后在家观看

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.FunctionalBoost.TypeTraits

SmartWin++

SmartWin++》是一个 100% 免费的 GUI 库,用于开发 Windows 应用程序,它既是“免费啤酒”,又是“言论自由”,你可以自由地将 SmartWin++ 用于商业应用程序和开源应用程序!

Open VRML

Open VRML》是一个免费的跨平台 VRML 运行时。基本的 OpenVRML 发行版包含你可以用于向应用程序添加 VRML 支持的库,以及 Lookat,一个简单的独立 VRML 浏览器。

Bayes++

Bayes++》是一个开源库,它表示并实现了来自《澳大利亚现场机器人中心》的离散系统贝叶斯滤波的各种数值算法。Bayes++ 尤其大量使用 Boost.Ublas 进行矩阵和数值计算。

Kohonen 神经网络库 (KNNL)

Kohonen 神经网络库》是一组用于设计、训练和使用 Kohonen 网络(自组织映射)的类和函数。

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

C++/Tk 库

C++/Tk 库》是 Tk GUI 库的开源 C++ 接口。

GluCat

GluCat》是一个模板类库,它对实数或复数域上的通用克利福德代数进行建模,具有任意维数和任意签名。

OpenMS

OpenMS》是一个用于 LC/MS 数据管理、缩减、评估、可视化、存储和复杂统计分析的开源 C++ 库。它可以用于开发与质谱法相关的应用程序。

libpdf++

libpdf++》是一个面向对象的库,用于生成 PDF(便携式文档格式)文件。它以一种方式设计,即文档中的对象直接映射到库中的类。

Regina

Regina》是针对 3 流形拓扑学家的数学软件套件。它专注于对 3 流形三角剖分的学习,并包括对普通曲面和角度结构的支持。

MetaFS

MetaFS》是 Linux(仅限 Linux)的守护进程,它允许你使用扩展属性轻松而一致地访问有关文件的信息(例如 MP3 标签或 JPEG 的 EXIF 标签)。它还允许你使用这些信息进行快速搜索。MetaFS 可扩展,因此任何人都可以编写插件以访问新的元数据类型。

ASN.1 工具

抽象语法符号一 (ASN.1) 是一种形式语言,用于抽象地描述在涉及互联网、智能网络、蜂窝电话、地面到空中通信、电子商务、安全电子服务、互动电视、智能交通系统、IP 语音等广泛应用中的消息交换。

ASN.1 工具 包含两个部分:ASN.1 编译器“asnparser”,它将抽象语法编译为 c++ 文件;以及一个运行时库,用于与 asnparser 生成的 c++ 文件链接。它基于 Open H.323 项目的工作,为 H.450 系列协议的需要而开发。

DGD

DGD (Depression Glass Debug) 是一个简单易用的 C++ ostream 扩展,旨在生成美观、可读且易于理解的跟踪日志。

FEAR

FEAR 是一个与语言无关的开源项目,提供便携式支持,用于在逼真的模拟世界中创建真正的 AI。

XEngine

XEngine 是一个与平台和渲染 API 无关的 3D 引擎,用于实时可视化,支持可编程图形管道架构,并使用 C++ 实现。

Spheral++

Spheral++ 是一种数值工具,用于模拟受流体动力学、引力和辐射效应影响的一组流体或固体材料的演化。Spherical++ 使用 Boost.Python.

C++ XML 对象

C++ XML 对象 是一个用于将 C++ 对象层次结构持久保存到 XML 文件和从 XML 文件加载的框架。

HippoDraw

HippoDraw 提供了一个高度交互式的数据分析环境。HippoDraw 使用 Boost.Python.

Orocos

Orocos 机器人控制软件应用程序框架.

ECell

E-Cell 项目 是一个国际研究项目,旨在开发必要的理论支持、技术和软件平台,以实现精确的整个细胞模拟。

VCS 易上手

VCS 易上手,简称 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.TupleBoost.Test."

Hydranode 引擎

Hydranode 引擎 是一个基于插件的 P2P 客户端引擎,它严重依赖于 Boost 库。Hydranode 代码库根据 GNU GPL 许可,主要由 Alo Sarv 开发。目前处于 Beta 阶段,Hydranode 运行在各种平台上,包括 Windows、Linux、BSD、Mac OS、Solaris 等。

"Hydranode 引擎和插件严重依赖于以下 Boost 库:Boost.BindBoost.FunctionBoost.LambdaBoost.MultiIndexBoost.Signals,线程,Boost.SmartPointers,格式,Boost.LexicalCast。其他正在使用的 Boost 库包括 Boost.FileSystemBoost.StringAlgorithmsBoost.DateTimeBoost.ProgramOptionsBoost.SpiritBoost.RandomBoost.TokenizerBoost.TypeTraitsBoost.TriboolBoost.TupleBoost.Any。一旦 Boost 1.33 发布,我也期待在 Hydranode 中使用 Boost Iostreams 库。

"Hydranode 中的所有复杂数据结构都是使用 Boost.MultiIndex 容器实现的,这大大缩短了开发时间并保持了代码的整洁。格式被用于所有文本格式化。拥有 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

Modor 项目是一个高性能 I/O 库。根据 BSD 许可证 发布。

NOX

NOX 项目是最初的 OpenFlow 控制器,它方便在 Linux 上快速开发 C++ 控制器。NOX 是软件定义网络生态系统的一部分。具体来说,它是一个用于构建网络控制应用程序的平台。

QuantLib

QuantLib 项目为量化金融提供了一个全面的软件框架。QuantLib 是一个免费/开源库,用于现实生活中建模、交易和风险管理。使用的 Boost 组件包括 Boost.SmartPointersBoost.IteratorBoost.Test.

CBCanaylzer

CBCanaylzer 由维尔茨堡大学生物信息学系开发。

"CBCAnalyzer (CBC = 补偿性碱基变化) 是一种从序列比对创建小型系统发育树的工具。为了衡量序列之间的距离,检测和计数补偿性碱基变化。然后使用 bionj 算法构建树。CBCAnalyzer 可在 Windows、Linux 上使用,并在一定程度上适用于 MacOSX。"

"使用的 Boost 库:Boost.ProgramOptions - 创建非常好的输出,并且易于扩展和处理。 Boost.IteratorBoost.Spirit - 节省了我的很多时间,并使大量生物文件格式易于支持,Boost.SharedPointerBoost.Lambda."

Profdist

Profdist 由维尔茨堡大学生物信息学系开发。

"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
  • 牛顿
  • ODE
  • OgreAL
  • CEGUI
  • OIS