C++标准库扩展权威指南
分类: 图书,计算机/网络,程序设计,C C++ C# VC VC++,
作者: (美)贝克尔 著,史晓明 译
出 版 社: 机械工业出版社
出版时间: 2008-4-1字数:版次: 1页数: 411印刷时间: 2008/04/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787111236757包装: 平装编辑推荐
“TR1的大小差不多是C++标准库的2倍。它加入了很多新的功能,甚至是全新类型的库部件。譬如说,在某些TR1类中,有些内嵌类型的存在与否可能会依赖于其模板参数。对于那些仅对C++标准库有经验的程序员来说,这是奇。隆而陌生的。本书非常完整(它覆盖了所有的TR1功能),它不仅比TR1本身更容易理解,而且在技术上也是正确的。”
——Matthew Austern, Google软件工程师
“TR1可以帮助C++程序员变得比过去更为多产。Pete Becker编写的这本书是对这些组件的终极参考手册:它们是什么、它们是怎么工作的以及它们可以用在哪里。对于那些想要使用这些标准化组件来提高他们的生产率和代码质量的人来说,应该把这本书放在其书架上。”
——John Maddock,顾问/程序员
当前的C++标准库使用常用的类和函数对C++语言核心进行扩展。在最近几年里,为了解决C++标准库的局限,作者开发了一系列组件来对C++语言进行更进一步的扩展。这些扩展编入一个全面的技术报告中(TR1),并且其中的大部分已经被C++标准的下一个版本通过了。
本书中,Pete Becker不仅对TR1库中的每一个组件都进行了详细的描写,还解释了基本工具、模板、调用包装器、类型特性、数值、正则表达式以及C语言兼容方面的新功能。通过自己在实现这些组件中所积累的经验,Pete Becker不仅阐明了它们的价值并在需要时对标准加以澄清,还提供了通过测试的完整代码。
本书大部分章节都包含了不同难度的练习来帮助程序员得到这些新组件的实践经验。这些练习的答案以及所有的代码示例都可以在网上找到。附录中不仅为TR1库所包含或扩展的头文件提供了摘要,还介绍了应该怎样在多线程应用程序中安全地使用这些组件。
该书可供各大专院校作为教材使用,也可供从事相关工作的人员作为参考用书使用。
内容简介
本书是对TR1进行了完整的介绍。全书共22章,包括元组、智能指针、类模板array、无序关系容器、调用包装器基础、mem_fn函数模板、reference_wrapper类模板、类模板function、函数模板bind、类型特性、数值函数、随机数生成器、头文件、正则表达式对象、查找、格式化和文件替换、正则表达式的定制以及C语言兼容等内容。全书不仅对枯燥的标准文本给出了浅显易懂的解释,还提供了很多示例和练习来帮助我们理解。每个C++程序员都可以从本书中获益匪浅。
作者简介
Pete Becker,是一位独立顾问,擅长于库的设计和实现。他曾经在Dinkumware,Ltd.工作,在那里他不仅为TR1库的各个部分编写了技术文档,还参与完成了对它们的实现。Pete Becker从一开始就是ISO C++标准委员会的成员,他现在是C++Ox的项目编辑。
目录
译者序
前言
第一部分基本工具
第1章元组
1.1头文件的摘要
1.2tuple类模板
1.3像tuple一样对std::pair进行存取
1.4练习
第2章智能指针
2.1定义
2.2关于示例
2.3头文件的摘要
2.4shared_ptr类模板
2.5类模板weak_ptr
2.6类模板enable_shared_from_this
2.7bad_weak_ptr类
2.8转换
2.9受控资源的析构
2.10异常
2.11多线程
2.12练习
第二部分容器
第3章基础知识
3.1STL部件
3.2容器
3.3进一步阅读
3.4练习
第4章类模板array
4.1类模板array概述
4.2信息获取
4.3访问
4.4修改
4.5迭代
4.6内嵌类型名称
4.7比较
4.8与tuple类似的接口
4.9练习
第5章无序关系容器
5.1对散列表进行标准化
5.2散列表
5.3关系容器和无序容器
5.4对无序容器的要求
5.5头文件和
5.6类模板hash
5.7无序容器的实例化
5.8构造函数
5.9容器操作
5.10负载因子和重散列
5.11优化
5.12进一步阅读
5.13练习
第三部分调用包装器
第6章调用包装器基础
6.1术语
6.2对可调用类型的要求
6.3头文件的摘要
6.4类模板result_of
6.5与现存的函数对象进行交互
6.6练习
第7章mem_fn函数模板
第8章reference_wrapper类模板
8.1创建
8.2内嵌类型
8.3调用
8.4练习
第9章类模板function
9.1构造一个function对象
9.2访问
9.3修改
9.4比较
9.5内嵌类型
9.6调用
9.7目标对象
9.8练习
第10章函数模板bind
10.1占位符
10.2unspecified bind(…)
10.3对bind进行扩展
10.4练习
第四部分类型特性
第11章类型特性概述
11.1头文件
11.2辅助类型
11.3基本类型
11.4复合类型
11.5类型属性
11.6类型关系
11.7类型变换
11.8对齐
11.9进一步阅读
11.10练习
第五部分数值
第12章数值函数
12.1关于示例
12.2浮点值的表示
12.3管理浮点环境
12.4无穷大、非规范数、NaN和比较
12.5定义域和值域错误
12.6新的重载规则
12.7基本数学函数
12.8数学特殊函数
12.9复函数
12.10进一步阅读
12.11练习
第13章随机数生成器
13.1随机数引擎
13.2TR1中的引擎模板
13.3TR1库中的random_device类
13.4TR1库中的预定义引擎
13.5随机数分布
13.6离散分布
13.7连续分布
13.8类模板variate_generator
13.9进一步阅读
13.10练习
第六部分正则表达式
第14章头文件
第15章正则表达式语法
15.1正则表达式结构
15.2语法特性
15.3正则表达式细节
15.4关于练习
15.5练习
第16章正则表达式对象
16.1定义
16.2头文件的部分摘要
16.3语法选项
16.4basic_regex类模板
16.5预定义的basic_regex类型
16.6错误处理
16.7练习
第17章查找
17.1头文件的部分摘要
17.2完整匹配
17.3查找
17.4查找选项
17.5练习
第18章查找结果
18.1头文件的部分摘要
18.2sub_match类模板
18.3预定义的sub_match类型
18.4类模板match_results
18.5练习
第19章重复查找
19.1暴力查找
19.2regex_iterator类模板
19.3regex_token_iterator类模板
19.4练习
第20章格式化和文本替换
20.1格式化选项
20.2格式化文本
20.3文本替换
20.4练习
第21章正则表达式的定制
21.1字符特性
21.2locale
21.3字符匹配
21.4归并
21.5字符类别
21.6regex_traits类模板
第七部分C语言兼容
第22章C语言兼容
22.1整数类型
22.264位整数类型
22.3固定大小的整数类型
22.4文本转换
22.5格式化说明符
22.6格式化I/O
22.7字符分类
22.8布尔类型
22.9 练习
附录
附录A头文件
附录B辅助头文件
附录C多线程
参考文献
书摘插图
第2章智能指针
自动对象(auto object)仅当定义它的函数执行时才会存在,而全局对象在程序运行时一直存在着。几乎每一个具有一定规模(nontrivial)的应用程序都会对某些生命周期介于自动对象和全局对象之间的资源进行控制。具有这类生命周期的资源中最常见的就是内存了,有经验的程序员会很清楚没有对动态分配的内存进行正确的处理会导致怎样的问题。TR1库为此提供了一对模板,它们有助于确保资源在需要时始终存在,并且在不再需要时会被正确释放。这两个模板是shared_ptr(将在第2.4节中讨论)和weak_ptr(将在第2.5节中讨论)
……