Boost 库概览
Boost 提供免费的同行评审的可移植 C++ 源代码库。
我们强调与 C++ 标准库配合良好的库。Boost 库旨在具有广泛的用途,并且可在广泛的应用程序中使用。Boost 许可证鼓励 所有用户以最小的限制使用 Boost 库。
我们的目标是建立“现有实践”并提供参考实现,以便 Boost 库适合最终标准化。从库技术报告(TR1) 中包含的 10 个 Boost 库开始,一直到 2011 年以来 C++ ISO 标准的每个版本,C++ 标准委员会一直依赖 Boost 作为标准 C++ 库补充的宝贵来源。
作为一个组织的 Boost
Boost 组织和更广泛的 Boost 社区支持对 C++ 及其开发的库的最佳用途的研究和教育,特别是但不限于 Boost 库中包含的那些内容。
该组织和社区支持邮件列表和聊天室,为 Boost Libraries 和 C++ 用户提供有关最佳实践和尖端技术的教育。
本文档基于 Boost 1.83.0
按类别排序
字符串和文本处理
- Convert:一个可扩展且可配置的类型转换框架。
- 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 Repository 是一个社区的成果,它为 Qi 解析器和 Karma 生成器收集了不同的可重用组件(原语、指令、语法等)。
- Static String:固定容量、动态大小的字符串。
- String Algo:字符串算法库。
- 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:The Boost Multi-index Containers Library 提供了一个名为 multi_index_container 的类模板,它支持构建容器,以维护具有不同排序和访问语义的一个或多个索引。
- Pointer Container:用于存储堆分配的多态对象以简化面向对象编程的容器。
- PolyCollection:多态对象的快速容器。
- Property Map:定义将键对象映射到值对象的接口的概念。
- Property Map (Parallel):Property Map 的并行扩展,可与 Parallel Graph 一起使用。
- Property Tree:树形数据结构特别适合存储配置数据。
- String Ref:字符串视图模板。
- Unordered:无序关联容器。
- URL:C++11 的 URL 解析库。
- Variant:安全、通用、基于堆栈的可区分联合容器。
- Variant2:std::variant 的绝对无值、强有力的保证实现。
迭代器
- GIL:(C++14) 泛型图像库。
- Graph:BGL 图接口和图组件是泛型的,与标准模板库 (STL) 具有相同的意义。
- GraphParallel:PBGL 图接口和图组件是泛型的,与标准模板库 (STL) 的意义相同。
- Iterator:Boost 迭代器库包含两部分。第一个是扩展 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:同时进行最小/最大和最小/最大元素计算的标准库扩展。
- Polygon:Voronoi 图构造和布尔/裁剪、调整大小/偏移等,适用于具有积分坐标的平面多边形。
- QVM:用于处理四元数向量和矩阵的通用 C++ 库。
- Range:建立在新式迭代器概念之上的泛型算法的新基础设施。
- Sort:高性能模板化排序函数。
- String Algo:字符串算法库。
- Utility:类不可复制加上 checked_delete(),checked_array_delete(),next(),prior() 函数模板,加上 base-from-member 惯用法。
函数对象和高阶编程
- Bind:boost::bind 标准库函数
std::bind1st
和std::bind2nd
的泛化。它支持任意函数对象、函数、函数指针和成员函数指针,并且能够将任何参数绑定到特定值或将输入参数路由到任意位置。 - Container Hash:与 STL 兼容的哈希函数对象,可以扩展哈希到用户定义的类型。
- Function:用于延迟调用或回调的函数对象包装器。
- Functional:Boost.Function 库包含一系列类模板,它们是函数对象包装器。
- Functional/Factory:用于创建动态和静态对象的函数对象模板。
- Functional/Forward:允许泛型函数对象接受任意参数的适配器。
- Functional/Overloaded Function:将不同的函数重载到单个函数对象中。
- HOF:C++ 的高阶函数。
- Lambda:在实际调用地点定义小型匿名函数对象等。
- Lambda2:C++14 的 lambda 库.
- Local Function:程序在本地,在其他函数中,直接在需要它们的范围内运行。
- Member Function:函数、对象、指针和成员函数的通用绑定器。
- Phoenix:在实际调用点定义小的匿名函数对象等。
- Ref:用于传递对泛型函数的引用的实用程序库。
- Result Of:确定函数调用表达式的类型。
- Signals2:托管信号和槽回调实现(线程安全版本 2)。
- Utility:类不可复制加上 checked_delete(),checked_array_delete(),next(),prior() 函数模板,加上 base-from-member 惯用法。
泛型编程
- 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 的并行扩展,可与 Parallel Graph 一起使用。
- QVM:用于处理四元数向量和矩阵的通用 C++ 库。
- Static Assert:静态断言(编译期断言)。
- Stl_interfaces:用于定义迭代器、视图和容器的 C++14 及更高版本 CRTP 模板。
- TTI:类型特征自省库。
- Type Traits:类型基本属性模板。
- YAP:C++14 及更高版本的表达式模板库。
模板元编程
- CallableTraits:Boost.FunctionTypes 的精神继承者,Boost.CallableTraits 是一个仅包含头文件的 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,包括套接字、定时器、主机名解析、套接字流、串行端口、文件描述符和 Windows 句柄。
- Atomic:C++11 风格的 atomic<>。
- Beast:仅使用 C++11 和 Boost.Asio 的可移植的 HTTP、WebSocket 和网络操作。
- Compute:并行/GPU计算库。
- Context:(C++11) 上下文切换库。
- Coroutine (已弃用):协程库。
- Coroutine2:(C++11) 协程库。
- Fiber:(C++11) 用户态线程库。
- Interprocess:共享内存、内存映射文件、进程共享互斥锁、条件变量、容器和分配器。
- Lockfree:无锁数据结构。
- MPI:消息传递接口库,用于分布式内存并行应用程序编程。
- MySQL:建立在 Boost.Asio 之上的 MySQL 客户端。
- Thread:可移植的 C++ 多线程, C++03, C++11, C++14, C++17。
数学与数字
- Accumulators:用于增量计算的框架,以及统计累加器的集合。
- Endian:用于正确字节排序等的类型和转换函数,无论处理器字节顺序如何。
- Geometry:Boost.Geometry 库提供几何算法、基元和空间索引。
- Histogram:快速多维直方图,具有方便的 C++14 接口。
- Integer:组织 boost 整形头文件和类,旨在利用 1999 C 标准中的
<stdint.h>
类型,而不诉诸 1998 C++ 标准中的未定义行为。头文件<boost/cstdint.hpp>
使标准整数类型在命名空间 boost 中安全可用,而无需在命名空间 std 中放置任何名称。 - Math:Boost.Math 包括在数学领域的多项贡献:浮点实用程序,特定宽度浮点类型,数学常数,统计分布,特殊函数,求根和函数最小化,多项式和有理函数,插值,数值积分和微分。许多这些特性都是模板化的,以支持内置和扩展的宽度类型(例如 Boost.Multiprecision)。
- Math Common Factor:最大公约数和最小公倍数。
- Math Octonion:八元数。
正确性和测试
- 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:空成员优化。
- Container:标准库容器和拓展。
- Fusion:用于处理元组的库,包括各种容器、算法等。
- Geometry:Boost.Geometry 库提供几何算法、基元和空间索引。
- Heap:优先级队列数据结构。
- Histogram:快速多维直方图,具有方便的 C++14 接口。
- ICL:间隔容器库、间隔集合和映射以及关联值的聚合。
- JSON:基于 C++11 的 JSON 解析、序列化和 DOM。
- Multi-Index:The Boost Multi-index Containers Library 提供了一个名为 multi_index_container 的类模板,它支持构建容器,以维护具有不同排序和访问语义的一个或多个索引。
- Optional:一个值语义的、类型安全的包装器,用于表示给定类型的’optional’(或’nullable’)对象。可选对象可以包含也可以不包含基础类型的值。
- PFR:用户定义类型的基基反射库。
- Pointer Container:用于存储堆分配的多态对象以简化面向对象编程的容器。
- 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,包括套接字、定时器、主机名解析、套接字流、串行端口、文件描述符和 Windows 句柄。
- Assign:用常量或生成的数据填充容器从未如此简单。
- Beast:仅使用 C++11 和 Boost.Asio 的可移植的 HTTP、WebSocket 和网络操作。
- Endian:用于正确字节排序等的类型和转换函数,无论处理器字节顺序如何。
- Format:格式化库,提供了一种类型安全机制,用于根据类似 printf 的格式字符串格式化参数。
- IO:标准I/O库的实用程序。
- Iostreams:Boost.IOStreams 提供了一个用于定义流、流缓冲区和 I/O 过滤器的框架。
- JSON:基于 C++11 的 JSON 解析、序列化和 DOM。
- MySQL:建立在 Boost.Asio 之上的 MySQL 客户端。
- Program Options:program_options 库允许程序开发人员通过命令行和配置文件等常规方法从用户处获取程序选项,即(名称,值)对。
- Serialization:用于持久性和编组的序列化。
- URL:C++11 的 URL 解析库。
跨语言支持
- Python:Boost Python 库是一个用于连接 Python 和 C++ 的框架。它允许您快速、无缝地将 C++ 类函数和对象公开给 Python,反之亦然,无需使用特殊工具 - 只需使用 C++ 编译器。
语言特性仿真
- Compat:后续 C++ 标准中添加的标准组件的 C++11 实现。
- Describe:一个 C++14 的反射库。
- Exception:Boost Exception 库支持在异常对象中传输任意数据,以及在线程之间传输异常。
- Foreach:在 C++ 中,编写一个在序列上迭代的循环是乏味的。我们既可以使用迭代器,这需要大量的模板,也可以使用 std::for_each() 算法并将循环体移到谓词中,这需要同样多的模板,并迫使我们将逻辑移到远离使用它的地方。相反,其他一些语言,如 Perl,提供了一个专用的“foreach”结构来自动化这个过程。BOOST_FOREACH 就是 C++ 中的这样一个构造。它为我们遍历序列,使我们不必直接处理迭代器或编写谓词。
- Move:用于 C++03 and C++11 编译器的可移植移动语义。
- Outcome:部分模拟轻量级异常的确定性故障处理库。
- Parameter:Boost.Parameter 库 - 编写按名称接受参数的函数。
- Parameter Python Bindings:Boost.Parameter 的 Python 绑定。
- Scope Exit:在作用域出口处执行任意代码。
- ThrowException:用于从 Boost 库抛出异常的通用基础设施。
- Type Index:运行时/编译时可复制的类型信息。
- Typeof:Typeof 运算符模拟。
内存
- Align:内存对齐函数,分配器,特征。
- Pool:内存池管理。
- Smart Ptr:智能指针模板类。
- Utility:类不可复制加上 checked_delete(),checked_array_delete(),next(),prior() 函数模板,加上 base-from-member 惯用法。
解析
- Spirit:LL 解析器框架,将解析器直接表示为内联 C++ 中的 EBNF 语法。
- Spirit Classic:LL 解析器框架,将解析器直接表示为内联 C++ 中的 EBNF 语法。
- Spirit Repository:Spirit Repository 是一个社区的成果,它为 Qi 解析器和 Karma 生成器收集了不同的可重用组件(原语、指令、语法等)。
模式和习语
- Compressed Pair:空成员优化。
- Flyweight:用于管理大量高度冗余对象的设计模式。
- Outcome:部分模拟轻量级异常的确定性故障处理库。
- Signals2:托管信号和槽回调实现(线程安全版本 2)。
- Utility:类不可复制加上 checked_delete(),checked_array_delete(),next(),prior() 函数模板,加上 base-from-member 惯用法。
编程接口
- Compat:后续 C++ 标准中添加的标准组件的 C++11 实现。
- Function:用于延迟调用或回调的函数对象包装器。
- Outcome:部分模拟轻量级异常的确定性故障处理库。
- Parameter:Boost.Parameter 库 - 编写按名称接受参数的函数。
- Parameter Python Bindings:Boost.Parameter 的 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 库提供了可移植的工具来查询和操作路径、文件和目录。
- Nowide:在 Windows 上使用 UTF-8 API 的标准库函数。
- Process:以可移植的方式创建流程的库。
- Stacktrace:收集、存储、复制和打印回溯。
- System:可扩展的错误报告。
- Thread:可移植的 C++ 多线程, C++03, C++11, C++14, C++17。
杂项
- Conversion:多态转换。
- Convert:一个可扩展且可配置的类型转换框架。
- Core:具有最低依赖性的简单核心实用程序的集合。
- Endian:用于正确字节排序等的类型和转换函数,无论处理器字节顺序如何。
- Lexical Cast:一般文字文本转换,例如 int 表示字符串,反之亦然。
- Log:日志库。
- Numeric Conversion:优化的基于策略的数字转换。
- Predef:该库从它可以收集的 C、C、Objective C 和 Objective C 预定义宏或通用头文件中定义的信息中定义了一组编译器、体系结构、操作系统、库和其他版本号。
- Program Options:program_options 库允许程序开发人员通过命令行和配置文件等常规方法从用户处获取程序选项,即(名称,值)对。
- Swap:增强通用交换功能。
- Timer:事件计时器、进度计时器和进度显示类。
- Tribool:三状态布尔类型库。
- Utility:类不可复制加上 checked_delete(),checked_array_delete(),next(),prior() 函数模板,加上 base-from-member 惯用法。
- Value Initialized:基于 David Abrahams 的原始想法,统一语法值初始化的包装器。
破碎编译器解决方案
- Compatibility:针对不合格标准库的帮助。
- Config:帮助 Boost 库开发人员适应编译器特性;不适合库用户。
按名称排序
A
- Accumulators:用于增量计算的框架,以及统计累加器的集合。
- Algorithm:一个有用的泛型算法的集合。
- Align:内存对齐函数,分配器,特征。
- Any:用于不同值类型的单值安全、泛型容器。
- Array:与 STL 兼容的容器包装器,用于常量大小的数组。
- Asio:可移植的网络和其他低级 I/O,包括套接字、定时器、主机名解析、套接字流、串行端口、文件描述符和 Windows 句柄。
- Assert:可定制的断言宏。
- Assign:用常量或生成的数据填充容器从未如此简单。
- Atomic:C++11 风格的 atomic<>。
B
- Beast:仅使用 C++11 和 Boost.Asio 的可移植的 HTTP、WebSocket 和网络操作。
- Bimap:C++ 双向映射键值对容器库。 使用 Boost.Bimap,你可以创建关联容器,其两种类型都可以用作键。
- Bind:boost::bind 标准库函数
std::bind1st
和std::bind2nd
的泛化。它支持任意函数对象、函数、函数指针和成员函数指针,并且能够将任何参数绑定到特定值或将输入参数路由到任意位置。
C
- Call Traits:定义传递参数的类型。
- CallableTraits:Boost.FunctionTypes 的精神继承者,Boost.CallableTraits 是一个仅包含头文件的 C++11 库,用于编译时检查和操作所有“可调用”类型。包含对 C++17 特性的额外支持。
- Chrono:有用的时间实用程序。C++11。
- Circular Buffer:符合 STL 的容器也称为环或循环缓冲区。
- Compat:后续 C++ 标准中添加的标准组件的 C++11 实现。
- Compatibility:针对不合格标准库的帮助。
- Compressed Pair:空成员优化。
- Compute:并行/GPU计算库。
- Concept Check:泛型编程工具。
- Config:帮助 Boost 库开发人员适应编译器特性;不适合库用户。
- Container:标准库容器和拓展。
- Container Hash:与 STL 兼容的哈希函数对象,可以扩展哈希到用户定义的类型。
- Context:(C++11) 上下文切换库。
- Contract:C++ 契约编程。所有的契约编程特性都得到了支持:转包、类不变量、后置条件(带有旧的和返回值)、先决条件、对断言失败的可定制操作(终止或抛异常)、可选的编译和检查断言等。
- Conversion:多态转换。
- Convert:可扩展且可配置的类型转换框架。
- Core:具有最低依赖性的简单核心实用程序的集合。
- Coroutine (已弃用):协程库。
- Coroutine2:(C++11) 协程库。
- CRC:Boost CRC 库提供了两种 CRC(循环冗余码)计算对象的实现和两种 CRC 计算函数的实现。这些实现是基于模板的。
D
- Date Time:一组基于泛型编程概念的日期时间库。
- Describe:一个 C++14 的反射库。
- DLL:用于轻松使用 DLL 和 DSO 的库。
- Dynamic Bitset:dynamic_bitset 类表示一组二进制位。它通过 operator[] 提供对各个位的值的访问,并提供可应用于内置整数的所有按位运算符,例如 operator& 和 operator<<。该集合中的位数是在运行时通过 dynamic_bitset 构造函数的参数指定的。
E
- Enable If:有选择地包含函数模板重载。
- Endian:用于正确字节排序等的类型和转换函数,无论处理器字节顺序如何。
- Exception:Boost Exception 库支持在异常对象中传输任意数据,以及在线程之间传输异常。
F
- Fiber:(C++11) 用户态线程库。
- Filesystem:Boost Filesystem 库提供了可移植的工具来查询和操作路径、文件和目录。
- Flyweight:用于管理大量高度冗余对象的设计模式。
- Foreach:在 C++ 中,编写一个在序列上迭代的循环是乏味的。我们既可以使用迭代器,这需要大量的模板,也可以使用 std::for_each() 算法并将循环体移到谓词中,这需要同样多的模板,并迫使我们将逻辑移到远离使用它的地方。相反,其他一些语言,如 Perl,提供了一个专用的“foreach”结构来自动化这个过程。BOOST_FOREACH 就是 C++ 中的这样一个构造。它为我们遍历序列,使我们不必直接处理迭代器或编写谓词。
- Format:格式库提供了一种用于根据类似 printf 的格式字符串格式化参数的类型安全机制。
- Function:用于延迟调用或回调的函数对象包装器。
- Function Types:Boost.FunctionTypes 提供了对函数、函数指针、函数引用和成员类型指针进行分类、分解和综合的功能。
- Functional:Boost.Function 库包含一系列类模板,它们是函数对象包装器。
- Functional/Factory:用于创建动态和静态对象的函数对象模板。
- Functional/Forward:允许泛型函数对象接受任意参数的适配器。
- Functional/Overloaded Function:将不同的函数重载到单个函数对象中。
- Fusion:用于处理元组的库,包括各种容器、算法等。
G
- Geometry:Boost.Geometry 库提供几何算法、基元和空间索引。
- GIL:(C++14) 泛型图像库。
- Graph:BGL 图接口和图组件是泛型的,与标准模板库 (STL) 具有相同的意义。
- GraphParallel:PBGL 图接口和图组件是泛型的,与标准模板库 (STL) 的意义相同。
H
- Hana:现代 C++ 元编程库。它提供高级算法来操作异构序列,允许使用自然语法编写类型级计算,提供内省用户定义类型的工具等等。
- Heap:优先级队列数据结构。
- Histogram:快速多维直方图,具有方便的 C++14 接口。
- HOF:C++ 的高阶函数。
I
- ICL:间隔容器库、间隔集合和映射以及关联值的聚合。
- Identity Type:将类型括在圆括号内,以便它们始终可以作为宏参数传递。
- In Place Factory, Typed In Place Factory:使用可变参数列表对包含的对象进行通用就地构造。
- Integer:组织 boost 整形头文件和类,旨在利用 1999 C 标准中的
<stdint.h>
类型,而不诉诸 1998 C++ 标准中的未定义行为。头文件<boost/cstdint.hpp>
使标准整数类型在命名空间 boost 中安全可用,而无需在命名空间 std 中放置任何名称。 - Interprocess:共享内存、内存映射文件、进程共享互斥锁、条件变量、容器和分配器。
- Interval:将常用的算术函数扩展到数学区间。
- Intrusive:侵入式容器和算法。
- IO:标准I/O库的实用程序。
- Iostreams:Boost.IOStreams 提供了一个定义流、流缓冲区和 I/O 过滤器的框架。
- Iterator:Boost 迭代器库包含两部分。第一个是扩展 C++ 标准迭代器需求的概念系统。第二个是一个组件框架,用于基于这些扩展的概念构建迭代器,并包括几个有用的迭代器适配器。
J
- JSON:基于 C++11 的 JSON 解析、序列化和 DOM。
L
- Lambda:在实际调用地点定义小型匿名函数对象等。
- Lambda2:C++14 的 lambda 库.
- LEAF:C++11 的轻量级错误处理库。
- Lexical Cast:一般文字文本转换,例如将 int 表示为字符串,或相反。
- Local Function:程序在本地,在其他函数中,直接在需要它们的范围内运行。
- Locale:为 C++ 提供本地化和 Unicode 处理工具。
- Lockfree:无锁数据结构。
- Log:日志库。
M
- Math:Boost.Math 包括在数学领域的多项贡献:浮点实用程序,特定宽度浮点类型,数学常数,统计分布,特殊函数,求根和函数最小化,多项式和有理函数,插值,数值积分和微分。许多这些特性都是模板化的,以支持内置和扩展的宽度类型(例如 Boost.Multiprecision)。
- Math Common Factor:最大公约数和最小公倍数。
- Math Octonion:八元数。
- Math Quaternion:四元数。
- Math/Special Functions:多种可供选择的数学特殊函数。
- Math/Statistical Distributions:多种单变量统计分布和对其进行运算的函数。
- Member Function:函数、对象、指针和成员函数的通用绑定器。
- Meta State Machine:一个非常高性能的库,用于表达UML2有限状态机。
- Metaparse:一个用于生成编译时解析器的库,解析嵌入式 DSL 代码作为 C++ 编译过程的一部分。
- Min-Max:同时进行最小/最大和最小/最大元素计算的标准库扩展。
- Move:用于 C++03 and C++11 编译器的可移植移动语义。
- Mp11:C++11 模板元编程库。
- MPI:消息传递接口库,用于分布式内存并行应用程序编程。
- MPL:Boost.MPL 是一个通用的、高级的 C++ 模板元编程框架,包含编译时算法、序列和元函数。它提供了一个概念基础和一套广泛的强大而连贯的工具,使在当前语言中使用 C++ 进行显式元编程尽可能容易和愉快。
- Multi-Array:Boost.MultiArray 提供了一个通用的 N 维数组概念定义和该接口的通用实现。
- Multi-Index:The Boost Multi-index Containers Library 提供了一个名为 multi_index_container 的类模板,它支持构建容器,以维护具有不同排序和访问语义的一个或多个索引。
- Multiprecision:浮点、整数和有理数算术的扩展精度算术类型。
- MySQL:建立在 Boost.Asio 之上的 MySQL 客户端。
N
- Nowide:在 Windows 上使用 UTF-8 API 的标准库函数。
- Numeric Conversion:优化的基于策略的数字转换。
O
- Odeint:解常微分方程。
- Operators:用模板简化了的算术类和迭代器。
- Optional:一个值语义的、类型安全的包装器,用于表示给定类型的’optional’(或’nullable’)对象。可选对象可以包含也可以不包含基础类型的值。
- Outcome:部分模拟轻量级异常的确定性故障处理库。
P
- Parameter:Boost.Parameter 库 - 编写按名称接受参数的函数。
- Parameter Python Bindings:Boost.Parameter 的 Python 绑定。
- PFR:用户定义类型的基基反射库。
- Phoenix:在实际调用点定义小的匿名函数对象等。
- Pointer Container:用于存储堆分配的多态对象以简化面向对象编程的容器。
- PolyCollection:多态对象的快速容器。
- Polygon:Voronoi 图构造和布尔/裁剪、调整大小/偏移等,适用于具有积分坐标的平面多边形。
- Pool:内存池管理。
- Predef:该库从它可以收集的 C、C、Objective C 和 Objective C 预定义宏或通用头文件中定义的信息中定义了一组编译器、体系结构、操作系统、库和其他版本号。
- Preprocessor:预处理器元编程工具,包括重复和递归。
- Process:以可移植的方式创建流程的库。
- Program Options:program_options 库允许程序开发人员通过命令行和配置文件等常规方法从用户处获取程序选项,即(名称,值)对。
- Property Map:定义将键对象映射到值对象的接口的概念。
- Property Map (Parallel):Property Map 的并行扩展,可与 Parallel Graph 一起使用。
- Property Tree:树形数据结构特别适合存储配置数据。
- Proto:用于特定领域嵌入式语言的表达式模板库和编译器构建工具包。
- Python:Boost Python 库是一个用于连接 Python 和 C++ 的框架。它允许您快速、无缝地将 C++ 类函数和对象公开给 Python,反之亦然,无需使用特殊工具 - 只需使用 C++ 编译器。
Q
- QVM:用于处理四元数向量和矩阵的通用 C++ 库。
R
- Random:一个完整的随机数生成系统。
- Range:建立在新式迭代器概念之上的泛型算法的新基础设施。
- Ratio:编译时有理算术。C++11。
- Rational:有理数类。
- Ref:用于传递对泛型函数的引用的实用程序库。
- Regex:正则表达式库。
- Result Of:确定函数调用表达式的类型。
S
- Safe Numerics:保证正确的整数算术。
- Scope Exit:在作用域出口处执行任意代码。
- Serialization:用于持久性和编组的序列化。
- Signals2:托管信号和槽回调实现(线程安全版本 2)。
- Smart Ptr:智能指针模板类。
- Sort:高性能模板化排序函数。
- Spirit:LL 解析器框架,将解析器直接表示为内联 C++ 中的 EBNF 语法。
- Spirit Classic:LL 解析器框架,将解析器直接表示为内联 C++ 中的 EBNF 语法。
- Spirit Repository:Spirit 存储库是一个社区的成果,为 Qi 解析器和 Karma 生成器收集不同的可重用组件(原语、指令、语法等)。
- Stacktrace:收集、存储、复制和打印回溯。
- Statechart:Boost.Statechart - C++ 代码实现的易于阅读和维护的可用于任意复杂度的有限状态机。
- Static Assert:静态断言(编译期断言)。
- Static String:固定容量、动态大小的字符串。
- Stl_interfaces:用于定义迭代器、视图和容器的 C++14 及更高版本 CRTP 模板。
- String Algo:字符串算法库。
- String Ref:字符串视图模板。
- Swap:增强通用交换功能。
- System:可扩展的错误报告。
T
- Test:支持简单的程序测试、完整的单元测试以及程序执行监控。
- Thread:可移植的 C++ 多线程, C++03, C++11, C++14, C++17。
- ThrowException:用于从 Boost 库抛出异常的通用基础设施。
- Timer:事件计时器、进度计时器和进度显示类。
- Tokenizer:将字符串或其他字符序列分解为一系列标记。
- Tribool:三状态布尔类型库。
- TTI:类型特征自省库。
- Tuple:简化返回多个值的函数的定义等。
- Type Erasure:基于概念的运行时多态性。
- Type Index:运行时/编译时可复制的类型信息。
- Type Traits:类型基本属性模板。
- Typeof:Typeof 运算符模拟。
U
- uBLAS:uBLAS 提供张量、矩阵和向量类以及基本线性代数例程。支持多种密集、压缩和稀疏存储方案。
- Units:零开销维度分析以及单位/数量操作和转换。
- Unordered:无序关联容器。
- URL:C++11 的 URL 解析库。
- Utility:类不可复制加上 checked_delete(),checked_array_delete(),next(),prior() 函数模板,加上 base-from-member 惯用法。
- Uuid:通用唯一标识符。
V
- Value Initialized:基于 David Abrahams 的原始想法,统一语法值初始化的包装器。
- Variant:安全、通用、基于堆栈的可区分联合容器。
- Variant2:std::variant 的绝对无值、强有力的保证实现。
- VMD:可变参数宏参数库。
W
- Wave:Boost.Wave 库符合标准,是强制性 C99/C++ 预处理器功能的高度可配置实现,封装在易于使用的迭代器接口后面。
X
- Xpressive:可以编写为字符串或表达式模板的正则表达式,并且可以利用上下文无关语法的功能递归地相互引用和自身引用。
Y
- YAP:C++14 及更高版本的表达式模板库。
Boost 库概览
http://example.com/2023/08/18/boost-library-overview/