网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 超越C++标准库(Boost库导论)
分类
作者 (美)卡尔森
出版社 清华大学出版社
下载
简介
编辑推荐

Boost库以不同的方式涵盖了上述3个方面。本书所覆盖的12个库中,有6个库已经为即将发布的C++库技术报告(Library Technical Report)所接受,这意味着它们很有可能成为下一版本的标准库的成员。因此,学习这些库具有长远的价值。希望大家能认为本书是一个很有用的工具,可以更好地帮助大家使用、理解和扩展Boost库。希望在本书的帮助下,大家可以把这些库以及它们所包含的思想整合到自己的设计和实现中。

内容推荐

本书是市面上第一本专门讨论Boost库的著作。书中首先概括性地简介了Boost的所有58个库,然后全面深入地阐述了12个十分有用的Boost库,展示了它们如何与C++标准库配合以及如何扩展C++标准库。

本书不仅介绍了Boost库的功能、使用方法及注意事项,而且还深入讨论了Boost库的设计理念、解决问题的思想和技巧以及待处理的问题。因此,本书是一本了解Boost库并探索其机理的实用手册。

目录

第Ⅰ部分 通用库

第1章 Smart_ptr库 3

1.1 Smart_ptr库如何改进程序 3

1.2 何时需要智能指针 3

1.3 Smart_ptr库如何适用于

标准库 4

1.4 智能指针scoped_ptr 5

1.4.1 头文件 5

1.4.2 成员 5

1.4.3 自由函数 6

1.4.4 使用方法 7

1.4.5 不需要手动删除 7

1.4.6 和智能指针auto_ptr

几乎一样 8

1.4.7 智能指针scoped_ptr和pimpl

惯用法 9

1.4.8 智能指针scoped_ptr不同

于const auto_ptr 11

1.4.9 小结 11

1.5 智能指针scoped_array 11

1.6 智能指针shared_ptr 12

1.6.1 头文件 12

1.6.2 成员 14

1.6.3 自由函数 16

1.6.4 使用方法 16

1.6.5 回顾Pimpl惯用法 17

1.6.6 智能指针shared_ptr和标准

库容器 17

1.6.7 智能指针shared_ptr和其他

资源 19

1.6.8 使用自定义删除工具

的安全性 20

1.6.9 从this创建智能指针

shared_ptr 21

1.6.10 小结 22

1.7 智能指针shared_array 23

1.8 智能指针intrusive_ptr 23

1.8.1 头文件 23

1.8.2 成员 24

1.8.3 自由函数 25

1.8.4 使用方法 25

1.8.5 提供引用计数器 26

1.8.6 把this用作智能指针 29

1.8.7 支持不同的引用计数器 30

1.8.8 小结 32

1.9 智能指针weak_ptr 33

1.9.1 头文件 33

1.9.2 成员 33

1.9.3 使用方法 34

1.9.4 一个常见的问题 35

1.9.5 两种从weak_ptr创建

shared_ptr的惯用法 38

1.9.6 小结 39

1.10 Smart_ptr库小结 39

第2章 Conversion库 41

2.1 Conversion库如何改进程序 41

2.2 polymorphic_cast转型函数 41

2.2.1 头文件 41

2.2.2 使用方法 42

2.2.3 向下转型和交叉转型 42

2.2.4 dynamic_cast和polymorphic

_cast的对比 44

2.2.5 polymorphic_cast并不总是

正确的选择 45

2.2.6 小结 46

2.3 polymorphic_downcast

转型函数 47

2.3.1 头文件 47

2.3.2 使用方法 48

2.3.3 小结 49

2.4 numeric_cast转型函数 49

2.4.1 头文件 49

2.4.2 使用方法 50

2.4.3 将较大的类型赋值给较小

的类型 50

2.4.4 特殊情况:目标类型是

无符号整数 52

2.4.5 有符号和无符号整数类型

的混用 53

2.4.6 浮点类型 54

2.4.7 小结 55

2.5 lexical_cast转型函数 56

2.5.1 头文件 56

2.5.2 使用方法 56

2.5.3 使lexical_cast函数工作

的方法 56

2.5.4 用lexical_cast函数进行

泛型编程 57

2.5.5 使类适用于lexical

_cast函数 58

2.5.6 小结 59

2.6 Conversion库小结 59

第3章 Utility库 61

3.1 Utility库如何改进程序 61

3.2 BOOST_STATIC_ASSERT

断言 61

3.2.1 头文件 61

3.2.2 使用方法 62

3.2.3 函数作用域中的BOOST

_STATIC_ASSERT 62

3.2.4 小结 63

3.3 checked_delete函数 63

3.3.1 头文件 63

3.3.2 使用方法 64

3.3.3 到底发生了什么问题 64

3.3.4 使用checked_delete解决

问题 66

3.3.5 小结 66

3.4 noncopyable类 67

3.4.1 头文件 67

3.4.2 使用方法 67

3.4.3 使类无法复制的方法 68

3.4.4 使用noncopyable类 69

3.4.5 记住Big Three定律 69

3.4.6 小结 71

3.5 addressof函数 71

3.5.1 头文件 71

3.5.2 使用方法 71

3.5.3 快速了解一下怀有

恶意的人 72

3.5.4 其他问题的迅速解决方法 72

3.5.5 小结 73

3.6 enable_if函数 73

3.6.1 头文件 73

3.6.2 使用方法 75

3.6.3 小结 79

3.7 Utility库小结 79

第4章 Operators库 81

4.1 Operators库如何改进程序 81

4.2 Operators库如何适用于

标准库 82

4.3 Operators库 82

4.3.1 头文件 82

4.3.2 解引用运算符 85

4.3.3 复合算术运算符 86

4.4 使用方法 87

4.4.1 对比较运算符的支持 88

4.4.2 Barton-Nackmann技巧 90

4.4.3 严格弱序 91

4.4.4 避免对象膨胀 93

4.4.5 运算符和各种类型 94

4.4.6 相等和等价之间的差别 95

4.4.7 算术类型 98

4.4.8 该使用运算符时再使用

运算符 99

4.4.9 理解Operators库的工作

机制 100

4.4.10 其他内容 102

4.5 Operators库小结 103

第5章 Regex库 104

5.1 Regex库如何改进程序 104

5.2 Regex库如何适用于标准库 104

5.3 Regex库 105

5.3.1 头文件 105

5.3.2 成员 105

5.3.3 自由函数 106

5.4 使用方法 107

5.4.1 输入验证 108

5.4.2 查找 110

5.4.3 替换 112

5.4.4 使用者常见的误解 113

5.4.5 关于重复和贪婪 113

5.4.6 regex_iterator简介 114

5.4.7 通过regex_token_iterator

分割字符串 116

5.4.8 更多的正则表达式 116

5.4.9 无效的正则表达式 117

5.5 Regex库小结 119

第Ⅱ部分 容器和数据结构

第6章 Any库 123

6.1 Any库如何改进程序 123

6.2 Any库如何适用于标准库 123

6.3 Any库 124

6.3.1 头文件 124

6.3.2 成员 124

6.3.3 自由函数 125

6.3.4 异常 126

6.4 使用方法 126

6.4.1 存储任意的类型 127

6.4.2 属性类 129

6.4.3 any类其他成员函数的用法 131

6.4.4 在any中存储指针 133

6.4.5 一个更好的办法—— 使用

智能指针shared_ptr 133

6.4.6 没有输入和输出运算符

的原因 137

6.4.7 通过any_out增加对输出

的支持 137

6.4.8 谓词 140

6.4.9 非空值计数 141

6.4.10 从容器中提取特定类型

的元素 141

6.4.11 使用谓词和提取器 142

6.4.12 适应标准库适配器的需求 144

6.5 Any库小结 146

第7章 Variant库 147

7.1 Variant库如何改进程序 147

7.2 Variant库如何适用于标准库 148

7.3 Variant库 148

7.3.1 头文件 148

7.3.2 成员 149

7.4 使用方法 150

7.4.1 访问Variant 152

7.4.2 泛型访问器 155

7.4.3 二元访问器 156

7.4.4 其他功能 158

7.5 Variant库小结 158

第8章 Tuple库 159

8.1 Tuple库如何改进程序 159

8.2 Tuple库如何适用于标准库 159

8.3 Tuple库 160

8.3.1 头文件 160

8.3.2 成员 161

8.3.3 自由函数 162

8.3.4 关系运算符 162

8.4 使用方法 163

8.4.1 元组的构造 163

8.4.2 访问tuple的元素 165

8.4.3 tuple的赋值和复制构造 166

8.4.4 tuple的比较 167

8.4.5 将tuple的元素绑定到变量 170

8.4.6 tuple的流操作 171

8.4.7 关于tuple的更多知识 172

8.4.8 tuple和for_each 175

8.5 Tuple库小结 178

第Ⅲ部分 函数对象和高阶编程

第9章 Bind库 181

9.1 Bind库如何改进程序 181

9.2 Bind库如何适用于标准库 182

9.3 Bind库 182

9.4 使用方法 183

9.4.1 调用成员函数 183

9.4.2 绑定的工作机制 186

9.4.3 占位符和参数的更多介绍 188

9.4.4 动态排序标准 190

9.4.5 函数组合:第Ⅰ部分 193

9.4.6 函数组合:第Ⅱ部分 195

9.4.7 在bind表达式中选择值语

义还是指针语义 195

9.4.8 虚函数同样可以绑定 197

9.4.9 绑定到成员变量 198

9.4.10 绑定还是不绑定 199

9.4.11 让绑定器处理状态 201

9.4.12 Boost.Bind和Boost

.Function之间的配合 203

9.5 Bind库小结 203

第10章 Lambda库 205

10.1 Lambda库如何改进程序 205

10.2 Lambda库如何适用于

标准库 206

10.3 Lambda库 206

10.4 使用方法 207

 10.4.1 一个简单的开始 207

10.4.2 当运算符不够使用时

使用绑定 209

10.4.3 如果不喜欢_1、_2和

_3占位符,如何重命名

它们 212

 10.4.4 常量和变量的命名 213

10.4.5 ptr_fun和mem_fun何去

何从 215

10.4.6 无需<functional>的算术

操作 217

 10.4.7 编写可读的谓词 218

10.4.8 使函数对象适用于

Boost.Lambda库 221

10.4.9 lambda表达式中的

控制结构 224

 10.4.10 lambda表达式中的转型 228

 10.4.11 构造和析构 231

 10.4.12 异常的抛出和捕获 235

10.5 Lambda库小结 238

第11章 Function库 239

11.1 Function库如何改进程序 239

11.2 Function库如何适用于

标准库 239

11.3 Function库 239

 11.3.1 头文件 239

 11.3.2 使用首选语法的声明 240

 11.3.3 使用兼容语法的声明 240

 11.3.4 成员 241

11.4 使用方法 242

 11.4.1 回调的基础 243

 11.4.2 类成员函数 246

 11.4.3 带状态的函数对象 247

11.4.4 在Boost.Function中

使用Boost.Bind 250

11.4.5 在Boost.Function中使用

Boost.Lambda 255

 11.4.6 代价的考虑 255

 11.4.7 幕后的细节 256

11.5 Function库小结 259

第12章 Signals库 260

12.1 Signals库如何改进程序 260

12.2 Signals库如何适用于

标准库 260

12.3 Signals库 261

 12.3.1 头文件 261

 12.3.2 类型 262

 12.3.3 成员 262

12.4 使用方法 263

 12.4.1 插槽分组 264

 12.4.2 带参数的signal 267

 12.4.3 对结果进行组合 274

 12.4.4 signal永远不能复制 277

 12.4.5 管理连接 277

12.4.6 使用Bind和Lambda

创建插槽 280

12.5 Signals库小结 282

随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/3/27 17:56:08