Boost C++ 库

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

开源 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.Any, Boost.Bind, Boost.Function, Boost.MPL, Boost.Operators, Boost.Range, Boost.StaticAssert, Boost.Thread, 和 Boost.TypeTraits

目前,Boost 和 Adobe 软件库已在约 30 款 Adobe 产品中使用。

LyX 文档编辑器

LyX 文档编辑器 是一款高级开源文档处理器,它鼓励基于文档结构而非外观的写作方法。LyX 使用工业强度的排版引擎 LaTeX,生成高质量、专业的输出。

LyX 使用 Boost 的许多部分,包括 Array, Boost.Bind, Boost.Regex, Boost.TypeTraits, Boost.Function, 和 Boost.Signals

Code Synthesis Tools CC 的 CodeSynthesis XML Schema 到 C++ 数据绑定编译器 (XSD)

CodeSynthesis 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 包含和导入路径。此外,我们计划提供 XML Schema 日期和时间类型到 Boost Boost.DateTime 库中 C++ 类型的可选映射。

CodeShop

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

我们将其用于以下项目

OpenZoep

一个开源 voip 堆栈 (xmpp-siprtp(port)audio/编解码器),能够进行 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.Operators, Boost.Iterator, Boost.Tuple, Boost.ConceptCheck, Boost.MPL, Boost.Bind, Boost.OptionalBoost.SmartPointers。”

ALPS

ALPS 是一个开源项目,旨在开发用于精确模拟量子晶格模型的代码,例如量子磁体、电子系统和玻色-爱因斯坦凝聚体。使用的主要 Boost 库有:Boost.Graph, Boost.Random, Boost.MultiIndex, Boost.ProgramOptions, Boost.LexicalCast, Boost.Serialization, Boost.Regex, Boost.Tuple, Boost.FileSystem, Boost.SmartPointers, Boost.Bind, Boost.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.Bind, Boost.Function, Boost.TypeTraits Boost.ProgramOptions

C++/Tk 库

C++/Tk 库 是一个开源 C++ 接口,用于 Tk GUI 库。

GluCat

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

OpenMS

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

libpdf++

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

Regina

Regina 是一套用于 3-流形拓扑学家的数学软件。它专注于研究 3-流形三角剖分,并包括对法曲面和角度结构的支持。

MetaFS

MetaFS 是一个仅适用于 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 是一个与语言无关的开源项目,它为在逼真的模拟世界中创建真正的人工智能提供可移植的支持。

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 Made Easy

VCS Made Easy,或简称 vcsme,是一个实用程序,其主要目的是简化由版本控制系统(例如著名的 CVS 或 Subversion)管理的文件树的维护。简而言之,它自动化了使用单个简单命令将所有这些目录更新到最新状态的过程。

“使用了以下 Boost 库:Boost.Format, Boost.SmartPointers, Boost.UtilityBoost.FileSystem。”

Monotone

Monotone 是一个免费的分布式版本控制系统。它提供了一个简单的单文件事务版本存储,具有完全断开连接的操作和高效的对等同步协议。它理解历史敏感的合并、轻量级分支、集成的代码审查和第三方测试。它使用加密版本命名和客户端 RSA 证书。它具有良好的国际化支持,没有外部依赖项,可以在 linux、solaris、OSX、windows 和其他 unixes 上运行,并根据 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 开发。Hydranode 目前处于 Beta 阶段,可在各种平台(包括 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.SmartPointers, Boost.Iterator, 和 Boost.Test

CBCanaylzer

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

“CBCAnalyzer(CBC = 补偿碱基变化)是一个用于从序列比对创建小型系统发育树的工具。为了测量序列的距离,检测并计数补偿碱基变化。然后使用 bionj 算法构建树。CBCAnalyzer 可在 Windows、Linux 上使用,部分可在 MacOSX 上使用。”

“使用的 Boost 库:Boost.ProgramOptions - 创建非常好的输出,并且易于扩展和简单易用。Boost.Iterator, Boost.Spirit - 节省了我大量时间,并使大量生物文件格式易于支持,Boost.SharedPointer, Boost.Lambda。”

Profdist

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

“Profdist 是一个用于基于轮廓距离构建大型系统发育树的工具。输入比对数据通过随机选择行来扩展,并使用聚类技术来创建最频繁子树的轮廓。迭代方法允许处理大型数据集。目前,该应用程序受到 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 的 Python 绑定 - 一个面向场景、灵活的 3D 引擎。

Python-Ogre 使用 Boost.Python 将以下库暴露给 Python

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