Boost C++ 库

...世界上最受尊敬和设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

开源 Boost

Boost 被广泛用于各种开源项目,包括应用程序和库。事实上,许多围绕 Boost 开发的开源库,过去曾被认为质量足够高,可以被吸收到主要的 Boost 源代码树中,这个过程毫无疑问会继续下去。其他的则在高度专业化的细分市场中,从概率论到天文学,再到质谱学:无论您对哪个领域感兴趣,您都会在 Boost 中找到有价值的东西。

Algocoders

Algocoders 已经使用 boost 超过 6 年,其使命是通过站在巨人的肩膀上,帮助人们构建更好的软件生态系统。

如果没有 Boost,我们很难使用现代 C++ 构建基于健全计算机科学数学基础的框架。Boost 在“使用和扩展 C++11、Boost 及其他”方面的开创性努力激励我们致力于开发工业级框架的微型小册子,以揭开其神秘面纱,初步关注 C++11 的实际应用及其背后的数学基础。

受到 boost 的鼓舞,我们正在不懈努力地出版一系列书籍(或小册子),以弥合深奥和通俗之间的差距。初步重点将放在 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 的 XML Schema 到 C++ 数据绑定编译器 (XSD)

Code Synthesis XML Schema 到 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-siprtp(port)audio/codecs),能够进行 pc2pc 呼叫和 pc2pstn 呼叫 - 它是一个基于消息的 sdk,所以你可以编写自己的 Gtalk 或 Skype ...

Boost 无处不在:从 xmpp 实现 (Boost.Function, Boost.Asio) 到编解码器包装器 (Boost.SmartPointers) 等。Boost 使代码更容易、更有趣、更安全和更快地开发。Bjam 用作构建系统。

请参阅 描述trac&svn

Abonja / Whitelabelvideo

在线视频共享平台:您可以在线上传和观看 flashvideo,同时运行您的 pc 客户端,并自动下载您的所有首选项,以便以后在家观看

Boost 和 C++ 用于服务器端工具。Bjam 用作构建系统。

www.abonja.nlwww.whitelabelvideo.nl(仅限荷兰语:用于观看和上传的 javascript sdk - Boost 也用于服务器端)。

上面的代码和其他项目以纯下载或库的形式提供。

各个部分解决了“简单”的问题,例如 Windows 注册表包装器,以及更像系统的部分,例如 drm 实现。Boost 无处不在(__filesystem, Boost.Thread, Boost.Asio, Boost.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 库 是一个开源 C++ 接口,用于 Tk GUI 库。

GluCat

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

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++ 是一个数值工具,用于模拟受流体动力学、重力和辐射效应影响的一组流体或固体材料的演变。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.Format, Boost.SmartPointers, Boost.UtilityBoost.FileSystem。”

Monotone

Monotone 是一个免费的分布式版本控制系统。它提供了一个简单的、单文件事务性版本存储,具有完全断开连接的操作和高效的对等同步协议。它理解历史敏感的合并、轻量级分支、集成代码审查和第三方测试。它使用加密版本命名和客户端 RSA 证书。它具有良好的国际化支持,没有外部依赖项,可在 Linux、Solaris、OSX、Windows 和其他 Unix 系统上运行,并根据 GNU GPL 许可发布。

“使用了以下 Boost 库:Boost.DateTime, Boost.FileSystem, Boost.Conversion, Boost.Optional, Boost.Random, Boost.Regex, Boost.SmartPointers, Boost.StaticAssert, Boost.Tokenizer, Boost.TupleBoost.Test。”

Hydranode 引擎

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

“Hydranode 引擎和插件严重依赖于以下 Boost 库:Boost.Bind, Boost.Function, Boost.Lambda, Boost.MultiIndex, Boost.Signals, Threads, Boost.SmartPointers, Format, Boost.LexicalCast。使用的其他 Boost 库包括 Boost.FileSystem, Boost.StringAlgorithms, Boost.DateTime, Boost.ProgramOptions, Boost.Spirit, Boost.Random, Boost.Tokenizer, Boost.TypeTraits, Boost.Tribool, Boost.TupleBoost.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

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.Iterator, Boost.Spirit - 节省了我大量时间,并使支持大量的生物文件格式变得简单,Boost.SharedPointer, Boost.Lambda。”

Profdist

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

“Profdist 是一个基于 profile 距离构建大型系统发育树的工具。输入的比对数据通过随机选取行进行扩展,并使用聚类技术创建最常见子树的 profile。迭代方法允许处理大型数据集。目前,该应用程序受到 wxWidgets 质量的严重限制,并且仅适用于 Windows 和 Linux。”

“使用的 Boost 库是:Boost.StringAlgorithms, Boost.Ref, Boost.Iterator, Boost.Spirit, Boost.SharedPointerBoost.Lambda。”

Yake 引擎

Yake 引擎 是一个基于组件的、面向对象的引擎,用 C++ 编写,主要为 VR 应用程序和游戏设计。它抽象了典型的低级和中间件 API,并提供各种低级、中级和应用程序级功能以及创建和导入内容的工具。

公共部门信贷解决方案

公共部门信贷解决方案 一个模拟主权评级债务评级的开源项目,使用蒙特卡罗模拟,其中包括对 Boost.Math 正态和柯西随机数生成器的调用。公共部门信贷框架

Python-Ogre

Python-Ogre 是 Ogre 3D(一个面向场景的、灵活的 3D 引擎)的 Python 绑定。

Python-Ogre 使用 Boost.Python 将以下库公开给 Python

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