# 序
C++社区正在发生着好事。C++依旧是最广泛使用的编程语言,它正在变 得更强大和更易用。你不信?听我细说。
标准C++的当前版本发布于1998,它为传统的面向过程编程、面向对象 编程和泛型编程提供了坚实的 支持。正如旧C++ (1998之前的) 独力承担了把面向对象普及到日常的软件开发中一样,C++98在为泛型编程做着同样的事情。九十年代中期标准模板库(STL)与标准C++的集成已经引起 了另一次编程范式的转变,就象八十年代的时候Bjarne Stroustrup把类引入到C一样。现在大多数的C++开发者都熟悉STL的概念,这再次提升了整体的水平。
C++能力的应用仍旧被不断发现。今天许多的C++库,包括特殊的数学 库,都大量利用了模板元编译的技术,它是设计C++模板的时候没有预测到的幸运结果。随着C++社区里的高级工具和技术不断涌现,开发复杂应用软件正变得 更简单、更令人愉快。
很难描述Boost对于C++世界的重要性。自从C++98发布后,除了 ISO的标准C++委员会, 没有一个团体对于C++的发展方向有比Boost更大的影响(许多Boost的成员本身就是WG21的重要成员,包括它的创始人,我的朋友Beman Dawes)。成千上万个杰出的Boost志愿者无私地,以对等审查方式开发了许多C++98没有提供的很有用的库。这些库中的十个已被接受将加入到即将 到来的C++0x的库中,更多的库正被考虑接受。Where a library approach has been shown to be wanting, the wisdom gained from the cross-pollination of Boost and WG21 has suggested a few modest language enhancements, which are now being entertained.
你不太可能没有听说过Boost,我来问一下你… 你需要在文本和数字之间进行转换,或 在任意的可流处理的类之间进行转换?没有问题,用Boost.lexical_cast。噢,你有更多复杂的文本处理要求?那么你可以用 Boost.Tokenizer 或 Boost.Regex, 或Boost.Spirit, 如果你需要完整的语法分析。Boost.Bind 的函数反射和组合能力会让你吃惊。要用函数对象来编程,有Boost.Lambda。静态断言?用MPL。如果你是用数学库,记住:你有 Boost.Math, Graph, Quaternion, Octonion, MultiArray, Random, 和 Rational。如果你刚好喜欢Python,有了Boost.Python的帮助,你可以和C++一起用它了。并且你可以从以上所有东西中挑选出你要 的。
Björn Karlsson是一名Boost 狂热者以及C++社区的热心的支持者。你曾经在C/C++ Users Journal上出版了很多有用的好文章,最近还为C++ Source, 一个新的C++社区的在线杂志(见 [www.artima.com/cppsource](http://www.artima.com/cppsource)) 写文章。他在本书中讲述了关键的Boost组件并给出示例,展示了如何使用它们扩充C++标准库。本书不仅是Boost的深入教程,也是标准C++的未来 版本的预示。希望你喜欢!
Chuck Allison, Editor, The C++ Source
- 序
- 前言
- Acknowledgments
- 关于作者
- 本书的组织结构
- Boost的介绍
- 字符串及文本处理
- 数 据结构, 容器, 迭代器, 和算法
- 函数对象及高级编程
- 泛 型编程与模板元编程
- 数学及数字处理
- 输入/输出
- 杂项
- Part I: 通用库
- Library 1. Smart_ptr
- Smart_ptr库如何改进你的程序?
- 何时我们需要智能指针?
- Smart_ptr如何适应标准库?
- scoped_ptr
- scoped_array
- shared_ptr
- shared_array
- intrusive_ptr
- weak_ptr
- Smart_ptr总结
- Library 2. Conversion
- Conversion 库如何改进你的程序?
- polymorphic_cast
- polymorphic_downcast
- numeric_cast
- lexical_cast
- Conversion 总结
- Library 3. Utility
- Utility 库如何改进你的程序?
- BOOST_STATIC_ASSERT
- checked_delete
- noncopyable
- addressof
- enable_if
- Utility 总结
- Library 4. Operators
- Operators库如何改进你的程序?
- Operators
- 用法
- Operators 总结
- Library 5. Regex
- Regex库如何改进你的程序?
- Regex 如何适用于标准库?
- Regex
- 用法
- Regex 总结
- Part II: 容器及数据结构
- Library 6. Any
- Any 库如何改进你的程序?
- Any 如何适用于标准库?
- Any
- 用法
- Any 总结
- Library 7. Variant
- Variant 库如何改进你的程序?
- Variant 如何适用于标准库?
- Variant
- 用法
- Variant 总结
- Library 8. Tuple
- Tuple 库如何改进你的程序?
- Tuple 库如何适用于标准库?
- Tuple
- 用法
- Tuple 总结
- Part III: 函数对象与高级编程
- Library 9. Bind
- Bind 库如何改进你的程序?
- Bind 如何适用于标准库?
- Bind
- 用法
- Bind 总结
- Library 10. Lambda
- Lambda 库如何改进你的程序?
- Lambda 如何适用于标准库?
- Lambda
- 用法
- Lambda 总结
- Library 11. Function
- Function 库如何改进你的程序?
- Function 如何适用于标准库?
- Function
- 用 法
- Function 总结
- Library 12. Signals
- Signals 库如何改进你的程序?
- Signals 如何适用于标准库?
- Signals
- 用法
- Signals 总结