Boost 简介






4.70/5 (32投票s)
2003 年 7 月 7 日
6分钟阅读

311036
Boost 库的概述。
目录
引言
Boost 是一个免费库,旨在为开发者提供高质量的软件组件,同时使用标准模板库的风格。库中的一些组件可能会被提议作为标准库的未来扩展。
Boost 主页Boost 库索引
CUJ 对 Boost 组件的描述
Boost 主页包含所有单独组件的详尽文档。本文旨在概述您为什么要考虑使用 Boost 以及 Boost 组件而不是其他库,并提供 CodeProject 上的一个位置,可以链接到相关文档。
安装
Boost 安装简单,因为库中的大多数组件都位于它们自己的头文件中,不需要修改。对于需要编译的组件,可以使用 BoostJam 构建工具。
您可以从 SourceForge 下载源代码 zip 包。
将整个存档解压缩到您选择的目录中。要开始使用这些组件,请将包含版本号的 Boost 目录添加到您的包含路径中。对于当前版本的 Boost,为 boost_1_30_0。
大多数组件都附带测试套件和使用示例。
为什么要用 Boost?
- Boost 支持命名空间。库中的所有组件都打包在“boost”命名空间或其子命名空间中。
- 定期更新。Boost 是一个不断发展的库,主页和 Boost 公告列表 显示了最近几个版本的一些变化。
- 开发者支持。有关组件的问题可以发送到 Boost 用户邮件组,或者在 Boost 邮件存档 或特定组件的某个列表中查找。
- Boost 支持各种编译器、操作系统和标准库。它为许多编译器损坏的功能提供了变通方法,其中最重要的可能是针对模板问题的变通方法,包括部分模板特化和成员模板友元。
- 回归测试。Boost 的每次更新都经过严格的回归测试,所有编译器的库状态都可以免费获得。
- 许多参与 C++ 标准开发的人都参与了 Boost。
- 易于安装和升级。在大多数情况下,安装和升级只需要添加或更改一个包含路径。
- 易于配置。编译选项可以通过更改一两个头文件中的指令来指定。
Boost 提供了什么?
以下是组件的最小列表。目前 Boost 中大约有 50 个主要的子组件。以下组件是我认为从 STL 组件逻辑演进而来、易于集成或对大多数程序员特别重要的组件。
智能指针
智能指针是防止资源泄漏的工具(特别是在存在异常的情况下),提倡“初始化即资源获取”的概念。它们在一定程度上模拟了垃圾回收的行为。
std::auto_ptr 的大多数限制都比较 well knownstd::auto_ptr
不能存储在标准容器中。std::auto_ptr
不能(轻易地)用于实现 pImpl(指向实现的指针)惯用法。std::auto_ptr
不适用于数组。
- 可以提供自定义删除函数。
- 检测不完整的模板类型。
Boost 和 Loki 智能指针的比较 新的 C++:更智能的指针 - Herb Sutter
Boost 智能指针用法简介 对话:言归正传 - Herb Sutter 和 Jim Hyslop
复合器
函数对象和绑定器已成为使用 STL 的常见部分,但使用大多数标准库实现仍然难以组合多个函数。复合器允许以多种方式组合函数对象,最大限度地减少用户编写自己的循环的次数。
Boost::compose 索引
C++ 标准库 - 教程和参考 (Nicolai M. Josuttis)
任意
一个组件,提供一种类型安全的方式来移动任何类型的组件,而无需依赖 void 指针或联合。此组件的设计原则至少与组件本身一样重要(从非模板基类派生模板类)。类似于 boost::any
的东西出现在 Alexandrescu 的《现代 C++ 设计》中,以函数对象和函数对象实现的形式。
boost::any 理论
Boost Any 用法简介 对话:我会为你持有任何东西 - Herb Sutter
Bind 和 Function
Bind 和 Function 被指定为两个独立的组件,但它们是标准库中当前存在的绑定器和函数对象概念的扩展(任意数量的参数)。
boost::function 主页
boost::bind 主页
Lambda 库
lambda 库提供了一种使用表达式模板生成绑定器、函数对象和复合器的快捷方式。我个人对该库的看法是,开发者需要一些练习才能识别它的用途。像 Lambda 库这样的库可能是 C++ 的未来方向,但目前,我想我宁愿使用更慢、更丑陋的代码,但我知道下一个人可以理解。
Boost Lambda 库索引有关表达式模板基础知识的更多信息发表在 C/C++ 用户杂志三月号 (C++ 表达式模板 – Angelika Langer 和 Klaus Kreft)
Boost 图形库 (BGL)
BGL 是一个巨大的库,拥有大量的支持材料和良好的示例程序。《Boost 图形库:用户指南和参考手册》已由 Addison-Wesley 在 C++ In Depth 系列中出版(与《Exceptional C++》、《More Exceptional C++》和《Modern C++ 设计》同系列),我相信这证明了该库的质量。
Boost 图形库目录Boost 图形库:用户指南和参考手册 书评
线程
由 Code Project 常客 William E. Kempf 开发,线程库使得在 C++ 中使用线程几乎像在 Java 中一样简单。它需要链接到使用 BoostJam 构建的附加库。
boost::threads 索引William E. Kempf 谈 boost::thread
Spirit 解析器生成器框架
Jonathan de Halleux 撰写了关于 Spirit 解析器生成器框架 的优秀介绍,并提供了指向相关材料的全面链接
还有什么?
- 正则表达式
- 特性
- 文件系统(目录迭代)
- 迭代器适配器
- 数学和矩阵
- 模板元编程框架
- 元组
- Python
参考文献
本文中的许多参考文献都来自 C / C++ 用户杂志 网站,该网站是获取有关 STL 和 Boost 用法和技术最新信息的绝佳资源。
有关 Boost 的更多信息可以在 Boost Consulting 找到
本文的灵感来源于 John M. Drescher 在“文章请求和想法”论坛中的一个项目
版本历史
2003 年 6 月 30 日 首次发布 |