Boost C++ 库

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

Boost 库文档

排序方式

按类别

字符串和文本处理

  • CharConv:C++11 中 <charconv> 的实现。
  • Convert:可扩展和可配置的类型转换框架。
  • Format:format 库提供了一种类型安全的机制,用于根据类似 printf 的格式字符串格式化参数。
  • Iostreams:Boost.IOStreams 提供了一个框架,用于定义流、流缓冲区和 i/o 过滤器。
  • Lexical Cast:通用的字面文本转换,例如将 int 表示为字符串,反之亦然。
  • Locale:为 C++ 提供本地化和 Unicode 处理工具。
  • Regex:正则表达式库。
  • Spirit:LL 解析器框架将解析器直接表示为内联 C++ 中的 EBNF 语法。
  • Spirit Classic:LL 解析器框架将解析器直接表示为内联 C++ 中的 EBNF 语法。
  • Spirit Repository:Spirit 仓库是一个社区努力,旨在收集用于 Qi 解析器和 Karma 生成器的不同可重用组件(原语、指令、语法等)。
  • Static String:固定容量的动态大小字符串。
  • String Algo:字符串算法库。
  • String View:字符串视图模板。
  • Tokenizer:将字符串或其他字符序列分解为一系列标记。
  • Wave:Boost.Wave 库是一个符合标准的、高度可配置的 C99/C++ 预处理器功能的实现,它被封装在一个易于使用的迭代器接口后面。
  • Xpressive:可以写成字符串或表达式模板的正则表达式,并且可以利用上下文无关语法的强大功能相互递归引用。

容器

  • Array:用于固定大小数组的 STL 兼容容器包装器。
  • Bimap:C++ 的双向映射库。使用 Boost.Bimap,您可以创建关联容器,其中两种类型都可以用作键。
  • Circular Buffer:一种 STL 兼容容器,也称为环形或循环缓冲区。
  • Container:标准库容器和扩展。
  • Dynamic Bitset:dynamic_bitset 类表示一组位。它通过 operator[] 提供对各个位值的访问,并提供可以应用于内置整数的所有按位运算符,例如 operator& 和 operator<<。集合中的位数在运行时通过 dynamic_bitset 构造函数的参数指定。
  • GIL:(C++14)通用图像库
  • Graph:BGL 图接口和图组件是通用的,与标准模板库 (STL) 的通用性相同。
  • GraphParallel:PBGL 图接口和图组件是通用的,与标准模板库 (STL) 的通用性相同。
  • ICL:区间容器库,区间集合和映射以及关联值的聚合
  • Intrusive:侵入式容器和算法。
  • JSON:C++11 中的 JSON 解析、序列化和 DOM
  • Multi-Array:Boost.MultiArray 提供了通用 N 维数组概念定义和该接口的常用实现。
  • Multi-Index:Boost Multi-index Containers Library 提供了一个名为 multi_index_container 的类模板,该模板支持构建维护一个或多个具有不同排序和访问语义的索引的容器。
  • Pointer Container:用于存储堆分配多态对象的容器,以简化 OO 编程。
  • PolyCollection:多态对象的快速容器。
  • Property Map:定义将键对象映射到值对象的接口的概念。
  • Property Map (Parallel):Property Map 的并行扩展,用于并行图。
  • Property Tree:一种树形数据结构,特别适合存储配置数据。
  • String Ref:字符串视图模板。
  • String View:字符串视图模板。
  • Unordered:无序关联容器。
  • URL:C++11 中的 URL 解析
  • Variant:安全、通用、基于堆栈的可区分联合容器。
  • Variant2:std::variant 的永不无值、强保证实现。

迭代器

  • GIL:(C++14)通用图像库
  • Graph:BGL 图接口和图组件是通用的,与标准模板库 (STL) 的通用性相同。
  • GraphParallel:PBGL 图接口和图组件是通用的,与标准模板库 (STL) 的通用性相同。
  • Iterator:Boost Iterator Library 包含两个部分。第一部分是一个概念系统,它扩展了 C++ 标准迭代器要求。第二部分是一个组件框架,用于基于这些扩展概念构建迭代器,并包括几个有用的迭代器适配器。
  • Operators:简化算术类和迭代器中运算符定义的模板。
  • Tokenizer:将字符串或其他字符序列分解为一系列标记。

算法

  • Algorithm:有用的通用算法集合。
  • Foreach:在 C++ 中,编写迭代序列的循环很繁琐。我们可以使用迭代器,这需要大量的样板代码,或者我们可以使用 std::for_each() 算法并将循环体移动到谓词中,这也需要不少样板代码,并迫使我们将逻辑从它将被使用的地方移开。相比之下,一些其他语言(如 Perl)提供了一个专用的 "foreach" 构造来自动化这个过程。BOOST_FOREACH 正是 C++ 的这种构造。它为我们迭代序列,使我们无需直接处理迭代器或编写谓词。
  • Geometry:Boost.Geometry 库提供几何算法、图元和空间索引。
  • GIL:(C++14)通用图像库
  • Graph:BGL 图接口和图组件是通用的,与标准模板库 (STL) 的通用性相同。
  • GraphParallel:PBGL 图接口和图组件是通用的,与标准模板库 (STL) 的通用性相同。
  • Histogram:用于 C++14 的快速多维直方图,具有方便的接口。
  • Min-Max:用于同时进行 min/max 和 min/max 元素计算的标准库扩展。
  • Polygon:Voronoi 图构造以及布尔运算/裁剪、调整大小/偏移等,适用于具有整数坐标的平面多边形。
  • QVM:用于处理四元数向量和矩阵的通用 C++ 库。
  • Range:一种新的通用算法基础设施,它建立在新的迭代器概念之上。
  • Sort:高性能模板排序函数。
  • String Algo:字符串算法库。

函数对象和高阶编程

  • Bind:boost::bind 是标准函数 std::bind1st 和 std::bind2nd 的泛化。它支持任意函数对象、函数、函数指针和成员函数指针,并且能够将任何参数绑定到特定值或将输入参数路由到任意位置。
  • Container Hash:一个与 STL 兼容的哈希函数对象,可以扩展以哈希用户定义的类型。
  • Container Hash:一个与 STL 兼容的哈希函数对象,可以扩展以哈希用户定义的类型。
  • Function:用于延迟调用或回调的函数对象包装器。
  • Functional:Boost.Function 库包含一系列类模板,这些模板是函数对象包装器。
  • Functional/Factory:用于动态和静态对象创建的函数对象模板
  • Functional/Forward:适配器,允许通用函数对象接受任意参数
  • Functional/Overloaded Function:将不同的函数重载到单个函数对象中。
  • Hash2:一个可扩展的哈希框架。
  • HOF:C++ 的高阶函数
  • Lambda:在实际调用站点定义小型未命名函数对象等。
  • Lambda2:C++14 lambda 库。
  • Local Function:在其他函数内部,直接在需要它们的作用域内本地编程函数。
  • Member Function:函数/对象/指针和成员函数的通用绑定器。
  • Phoenix:在实际调用站点定义小型未命名函数对象等。
  • Ref:一个实用程序库,用于将引用传递给泛型函数。
  • Result Of:确定函数调用表达式的类型。
  • Signals2:托管信号和槽回调实现(线程安全版本 2)。

泛型编程

  • Call Traits:定义用于传递参数的类型。
  • Concept Check:泛型编程工具。
  • Enable If:选择性包含函数模板重载。
  • Function Types:Boost.FunctionTypes 提供了对函数、函数指针、函数引用和成员指针类型进行分类、分解和合成的功能。
  • GIL:(C++14)通用图像库
  • In Place Factory, Typed In Place Factory:使用可变参数列表泛型就地构造包含的对象。
  • Operators:简化算术类和迭代器中运算符定义的模板。
  • Property Map:定义将键对象映射到值对象的接口的概念。
  • Property Map (Parallel):Property Map 的并行扩展,用于并行图。
  • QVM:用于处理四元数向量和矩阵的通用 C++ 库。
  • Static Assert:静态断言(编译时断言)。
  • Stl_interfaces:C++14 及更高版本的 CRTP 模板,用于定义迭代器、视图和容器。
  • TTI:类型特征内省库。
  • Type Traits:用于类型基本属性的模板。
  • YAP:用于 C++14 及更高版本的表达式模板库。

模板元编程

  • CallableTraits:Boost.CallableTraits 是 Boost.FunctionTypes 的精神继承者,是一个仅标头的 C++11 库,用于编译时检查和操作所有“可调用”类型。额外支持 C++17 功能。
  • Describe:C++14 反射库。
  • Function Types:Boost.FunctionTypes 提供了对函数、函数指针、函数引用和成员指针类型进行分类、分解和合成的功能。
  • Fusion:用于处理元组的库,包括各种容器、算法等。
  • Hana:一个现代 C++ 元编程库。它提供了用于操作异构序列的高级算法,允许使用自然语法编写类型级计算,提供内省用户定义类型的工具等等。
  • HOF:C++ 的高阶函数
  • Metaparse:一个用于生成编译时解析器的库,该解析器将嵌入式 DSL 代码解析为 C++ 编译过程的一部分
  • Mp11:C++11 元编程库。
  • MPL:Boost.MPL 库是一个通用的、高级的 C++ 模板元编程框架,包含编译时算法、序列和元函数。它提供了一个概念基础和一套广泛而强大且连贯的工具,使得在当前的语言中进行显式元编程在 C++ 中尽可能容易和愉快。
  • PFR:用户定义类型的基本反射。
  • Proto:用于特定领域嵌入式语言的表达式模板库和编译器构建工具包。
  • Static Assert:静态断言(编译时断言)。
  • TTI:类型特征内省库。
  • Type Traits:用于类型基本属性的模板。
  • YAP:用于 C++14 及更高版本的表达式模板库。

预处理器元编程

  • Identity Type:将类型包装在圆括号内,以便它们始终可以作为宏参数传递。
  • Preprocessor:预处理器元编程工具,包括重复和递归。
  • VMD:可变参数宏数据库。

并发编程

  • Asio:可移植的网络和其他底层 I/O,包括套接字、计时器、主机名解析、套接字 iostream、串行端口、文件描述符和 Windows HANDLE。
  • Atomic:C++11 风格的原子类型。
  • Beast:仅使用 C++11 和 Boost.Asio 的可移植 HTTP、WebSocket 和网络操作
  • Cobalt:协程。基本算法和类型
  • Compute:并行/GPU 计算库
  • Context:(C++11)上下文切换库。
  • Coroutine (已弃用):协程库。
  • Coroutine2:(C++11)协程库。
  • Fiber:(C++11)用户级线程库。
  • Interprocess:共享内存、内存映射文件、进程共享互斥锁、条件变量、容器和分配器。
  • Lockfree:无锁数据结构。
  • MPI:消息传递接口库,用于分布式内存并行应用程序编程。
  • MQTT5:构建在 Boost.Asio 之上的 MQTT5 客户端库。
  • MySQL:构建在 Boost.Asio 之上的 MySQL 客户端库。
  • Redis:构建在 Boost.Asio 之上的 Redis 异步客户端库。
  • Thread:可移植的 C++ 多线程。C++11、C++14、C++17。

数学和数值计算

  • Accumulators:用于增量计算和统计累加器收集的框架。
  • Endian:用于正确字节顺序的类型和转换函数,以及更多与处理器字节序无关的功能。
  • Geometry:Boost.Geometry 库提供几何算法、图元和空间索引。
  • Histogram:用于 C++14 的快速多维直方图,具有方便的接口。
  • Integer:boost integer 标头和类的组织旨在利用 1999 C 标准中的 <stdint.h> 类型,而不会在 1998 C++ 标准方面导致未定义的行为。标头 <boost/cstdint.hpp> 使标准整数类型在命名空间 boost 中安全可用,而不会在命名空间 std 中放置任何名称。
  • Interval:将常用的算术函数扩展到数学区间。
  • Math:Boost.Math 包括数学领域的几个贡献:浮点实用程序、特定宽度浮点类型、数学常数、统计分布、特殊函数、求根和函数最小化、多项式和有理函数、插值以及数值积分和微分。其中许多功能都已模板化,以支持内置类型和扩展宽度类型(例如 Boost.Multiprecision)
  • Math Common Factor:最大公约数和最小公倍数。
  • Math Octonion:八元数。
  • Math Quaternion:四元数。
  • Math/Special Functions:各种数学特殊函数。
  • Math/Statistical Distributions:各种单变量统计分布和对其进行操作的函数。
  • Multi-Array:Boost.MultiArray 提供了通用 N 维数组概念定义和该接口的常用实现。
  • Multiprecision:用于浮点、整数和有理算术的扩展精度算术类型。
  • Numeric Conversion:优化的基于策略的数值转换。
  • Odeint:求解常微分方程。
  • Operators:简化算术类和迭代器中运算符定义的模板。
  • Polygon:Voronoi 图构造以及布尔运算/裁剪、调整大小/偏移等,适用于具有整数坐标的平面多边形。
  • QVM:用于处理四元数向量和矩阵的通用 C++ 库。
  • Random:一个完整的随机数生成系统。
  • Ratio:编译时有理算术。C++11。
  • Rational:有理数类。
  • Safe Numerics:保证正确的整数算术
  • uBLAS:uBLAS 提供张量、矩阵和向量类以及基本线性代数例程。支持几种密集、压缩和稀疏存储方案。

正确性和测试

  • Assert:可自定义的断言宏。
  • Concept Check:泛型编程工具。
  • Contract:C++ 的契约式编程。支持所有契约式编程功能:分包、类不变量、后置条件(带有旧值和返回值)、前置条件、断言失败时的可自定义操作(例如,终止或抛出)、断言的可选编译和检查等。
  • Safe Numerics:保证正确的整数算术
  • Stacktrace:收集、存储、复制和打印回溯。
  • Static Assert:静态断言(编译时断言)。
  • Test:支持简单的程序测试、完整的单元测试和程序执行监控。

错误处理和恢复

  • Assert:可自定义的断言宏。
  • Exception:Boost Exception 库支持在异常对象中传输任意数据,以及在线程之间传输异常。
  • LEAF:一个轻量级的 C++11 错误处理库。
  • System:可扩展的错误报告。
  • ThrowException:用于从 Boost 库抛出异常的通用基础设施。

数据结构

  • Any:用于不同值类型的单个值的安全、通用容器。
  • Bimap:C++ 的双向映射库。使用 Boost.Bimap,您可以创建关联容器,其中两种类型都可以用作键。
  • Compressed Pair:具有空成员优化的 pair 类。
  • Container:标准库容器和扩展。
  • Fusion:用于处理元组的库,包括各种容器、算法等。
  • Geometry:Boost.Geometry 库提供几何算法、图元和空间索引。
  • Heap:优先级队列数据结构。
  • Histogram:用于 C++14 的快速多维直方图,具有方便的接口。
  • ICL:区间容器库,区间集合和映射以及关联值的聚合
  • JSON:C++11 中的 JSON 解析、序列化和 DOM
  • Multi-Index:Boost Multi-index Containers Library 提供了一个名为 multi_index_container 的类模板,该模板支持构建维护一个或多个具有不同排序和访问语义的索引的容器。
  • Optional:一个值语义、类型安全的包装器,用于表示给定类型的“可选”(或“可空”)对象。可选对象可能包含也可能不包含基础类型的值。
  • PFR:用户定义类型的基本反射。
  • Pointer Container:用于存储堆分配多态对象的容器,以简化 OO 编程。
  • Polygon:Voronoi 图构造以及布尔运算/裁剪、调整大小/偏移等,适用于具有整数坐标的平面多边形。
  • Property Tree:一种树形数据结构,特别适合存储配置数据。
  • Tuple:简化返回多个值的函数的定义等。
  • Type Erasure:基于概念的运行时多态。
  • URL:C++11 中的 URL 解析
  • Uuid:通用唯一标识符。
  • Variant:安全、通用、基于堆栈的可区分联合容器。
  • Variant2:std::variant 的永不无值、强保证实现。

特定领域

  • Chrono:有用的时间实用程序。C++11。
  • CRC:Boost CRC 库提供了 CRC(循环冗余码)计算对象的两种实现和 CRC 计算函数的两种实现。这些实现是基于模板的。
  • Date Time:一组基于泛型编程概念的日期时间库。
  • Units:零开销量纲分析和单位/数量操作和转换。
  • Uuid:通用唯一标识符。

图像处理

  • GIL:(C++14)通用图像库

输入/输出

  • Asio:可移植的网络和其他底层 I/O,包括套接字、计时器、主机名解析、套接字 iostream、串行端口、文件描述符和 Windows HANDLE。
  • Assign:使用常量或生成的数据填充容器从未如此简单。
  • Beast:仅使用 C++11 和 Boost.Asio 的可移植 HTTP、WebSocket 和网络操作
  • Endian:用于正确字节顺序的类型和转换函数,以及更多与处理器字节序无关的功能。
  • Format:format 库提供了一种类型安全的机制,用于根据类似 printf 的格式字符串格式化参数。
  • IO:标准 I/O 库的实用程序。
  • Iostreams:Boost.IOStreams 提供了一个框架,用于定义流、流缓冲区和 i/o 过滤器。
  • JSON:C++11 中的 JSON 解析、序列化和 DOM
  • MQTT5:构建在 Boost.Asio 之上的 MQTT5 客户端库。
  • MySQL:构建在 Boost.Asio 之上的 MySQL 客户端库。
  • Program Options:program_options 库允许程序开发人员通过传统方法(如命令行和配置文件)从用户那里获取程序选项,即(名称,值)对。
  • Redis:构建在 Boost.Asio 之上的 Redis 异步客户端库。
  • Serialization:用于持久性和编组的序列化。
  • URL:C++11 中的 URL 解析

跨语言支持

  • Python:Boost Python Library 是一个用于连接 Python 和 C++ 的框架。它允许您快速无缝地将 C++ 类函数和对象暴露给 Python,反之亦然,无需任何特殊工具——只需您的 C++ 编译器。

语言特性模拟

  • Compat:C++11 标准组件在更高版本的 C++ 标准中添加的实现。
  • Describe:C++14 反射库。
  • Exception:Boost Exception 库支持在异常对象中传输任意数据,以及在线程之间传输异常。
  • Foreach:在 C++ 中,编写迭代序列的循环很繁琐。我们可以使用迭代器,这需要大量的样板代码,或者我们可以使用 std::for_each() 算法并将循环体移动到谓词中,这也需要不少样板代码,并迫使我们将逻辑从它将被使用的地方移开。相比之下,一些其他语言(如 Perl)提供了一个专用的 "foreach" 构造来自动化这个过程。BOOST_FOREACH 正是 C++ 的这种构造。它为我们迭代序列,使我们无需直接处理迭代器或编写谓词。
  • Move:用于 C++03 和 C++11 编译器的可移植移动语义。
  • Outcome:一个确定性的故障处理库,部分模拟轻量级异常。
  • Parameter:Boost.Parameter Library - 编写接受按名称参数的函数。
  • Parameter Python Bindings:Boost.Parameter Library Python 绑定。
  • Scope:作用域保护集合和一个 unique_resource 包装器。
  • Scope Exit:在作用域退出时执行任意代码。
  • ThrowException:用于从 Boost 库抛出异常的通用基础设施。
  • Type Index:运行时/编译时可复制的类型信息。
  • Typeof:Typeof 运算符模拟。

内存

  • Align:内存对齐函数、分配器、特性。
  • Pool:内存池管理。
  • Smart Ptr:智能指针类模板。

解析

  • Parser:解析器组合子库。
  • Spirit:LL 解析器框架将解析器直接表示为内联 C++ 中的 EBNF 语法。
  • Spirit Classic:LL 解析器框架将解析器直接表示为内联 C++ 中的 EBNF 语法。
  • Spirit Repository:Spirit 仓库是一个社区努力,旨在收集用于 Qi 解析器和 Karma 生成器的不同可重用组件(原语、指令、语法等)。

模式和惯用法

  • Compressed Pair:具有空成员优化的 pair 类。
  • Flyweight:用于管理大量高度冗余对象的设计模式。
  • Outcome:一个确定性的故障处理库,部分模拟轻量级异常。
  • Scope:作用域保护集合和一个 unique_resource 包装器。
  • Signals2:托管信号和槽回调实现(线程安全版本 2)。
  • Utility:各种实用程序,例如 base-from-member 惯用法和 C++03 中的二进制字面量。

编程接口

  • Compat:C++11 标准组件在更高版本的 C++ 标准中添加的实现。
  • Function:用于延迟调用或回调的函数对象包装器。
  • Outcome:一个确定性的故障处理库,部分模拟轻量级异常。
  • Parameter:Boost.Parameter Library - 编写接受按名称参数的函数。
  • Parameter Python Bindings:Boost.Parameter Library Python 绑定。
  • System:可扩展的错误报告。

状态机

  • Meta State Machine:一个用于表达性 UML2 有限状态机的非常高性能的库。
  • Statechart:Boost.Statechart - 可以在易于阅读和维护的 C++ 代码中实现任意复杂的有限状态机。

系统

  • Chrono:有用的时间实用程序。C++11。
  • Context:(C++11)上下文切换库。
  • Date Time:一组基于泛型编程概念的日期时间库。
  • DLL:用于舒适地处理 DLL 和 DSO 的库。
  • Fiber:(C++11)用户级线程库。
  • Filesystem:Boost Filesystem Library 提供了可移植的工具来查询和操作路径、文件和目录。
  • Nowide:Windows 上具有 UTF-8 API 的标准库函数。
  • Process:以可移植方式创建进程的库。
  • Stacktrace:收集、存储、复制和打印回溯。
  • System:可扩展的错误报告。
  • Thread:可移植的 C++ 多线程。C++11、C++14、C++17。

杂项

  • CharConv:C++11 中 <charconv> 的实现。
  • Conversion:多态转换。
  • Convert:可扩展和可配置的类型转换框架。
  • Core:具有最小依赖性的简单核心实用程序集合。
  • Endian:用于正确字节顺序的类型和转换函数,以及更多与处理器字节序无关的功能。
  • Lexical Cast:通用的字面文本转换,例如将 int 表示为字符串,反之亦然。
  • Log:日志记录库。
  • Numeric Conversion:优化的基于策略的数值转换。
  • Predef:此库从它可以收集的 C、C++、Objective C 和 Objective C++ 预定义宏或通用标头中定义的宏的信息中定义了一组编译器、架构、操作系统、库和其他版本号。
  • Program Options:program_options 库允许程序开发人员通过传统方法(如命令行和配置文件)从用户那里获取程序选项,即(名称,值)对。
  • Swap:增强的泛型 swap 函数。
  • Timer:事件计时器、进度计时器和进度显示类。
  • Tribool:3 态布尔类型库。
  • Utility:各种实用程序,例如 base-from-member 惯用法和 C++03 中的二进制字面量。
  • Value Initialized:基于 David Abrahams 的原始想法,用于统一语法值初始化的包装器。

损坏的编译器解决方法

  • Compatibility:帮助不符合标准的标准库。
  • Config:帮助 Boost 库开发人员适应编译器特性;不适用于库用户。