扫描二维码,下载手机APP
下载安卓APP箭头
客服QQ
箭头给我发消息

客服QQ:2698585038

C++11/14高级编程-Boost程序库探秘-(第3版)

综合评级:
★★★★★

定价:
¥79.00

作者:
罗剑锋

出版社:
清华大学

出版日期:
2016/09/01

页数:
486

ISBN:
9787302441755

书籍介绍

C++的新标准(C++ll/14)引入了许多强大易用的新特性新功能,从语言层面深刻地改变了C++的开发范式。

Boost程序库由C++标准委员会部分成员所设立的Boost社区开发并维护,它构造精巧、跨平台、开源并且完全免费,被称为“C++‘准’标准库”,已广泛应用在实际软件开发中。Boost内容涵盖智能指针、文本处理、并发、模板元编程、预处理元编程等许多领域,其范围之广内涵之深甚至要超过C++ll/14标准,极大地增强了C++的功能和表现力。

本书基于CH最新标准和Boost程序库1.60版,深入探讨了其中的许多特性和高级组件,包括迭代器、函数对象、容器、流处理以及C++语言中最复杂最具威力的模板元编程和预处理元编程,具有较强的实用性,可帮助读者深层次地理解掌握现代C++的高级技术和Boost的内部实现机制及用法。

全书内容丰富、结构合理、概念清晰、讲解细致,是广大C++序员和爱好者的必备好书。

目录

第0章 导读 1

0.1 关于本书 1

0.2 读者对象 2

0.3 C 标准 3

0.4 开发环境 3

0.5 代码风格 3

0.6 本书的结构 4

0.7 如何阅读本书 5

0.8 本书的源码 6

第1章 全新的C 语言 7

1.1 概述 8

1.2 左值与右值 9

1.2.1 定义 9

1.2.2 右值引用 10

1.2.3 转移语义 11

1.2.4 完美转发 12

1.3 自动类型推导 13

1.3.1 auto 13

1.3.2 decltype 15

1.3.3 decltype(auto) 17

1.4 面向过程编程 17

1.4.1 空指针 17

1.4.2 初始化 18

1.4.3 新式for循环 19

1.4.4 新式函数声明 20

1.5 面向对象编程 21

1.5.1 default 21

1.5.2 delete 22

1.5.3 override 23

1.5.4 final 24

1.5.5 成员初始化 25

1.5.6 委托构造 26

1.6 泛型编程 27

1.6.1 类型别名 27

1.6.2 编译期常量 28

1.6.3 静态断言 29

1.6.4 可变参数模板 29

1.7 函数式编程 31

1.7.1 lambda表达式31

1.7.2 捕获外部变量 32

1.7.3 类型转换 34

1.7.4 泛型的lambda表达式 35

1.8 并发编程 35

1.9 面向安全编程 37

1.9.1 无异常保证 37

1.9.2 内联名字空间 37

1.9.3 强类型枚举 38

1.9.4 属性 39

1.10 更多特性 39

1.10.1语言版本号 39

1.10.2超长整型 40

1.10.3原始字符串 40

1.10.4自定义字面值 41

1.10.5杂项 43

1.11 总结 44

第2章 模板元编程简介 45

2.1 概述 45

2.2 语法元素 46

2.3 元数据 46

2.4 元函数 47

2.5 元函数转发 49

2.6 易用的工具宏 50

2.7 应用示例 51

2.8 总结 52

第3章 类型特征萃取 55

3.1 概述 55

3.2 元数据类别 56

3.2.1 基本类别 56

3.2.2 复合类别 58

3.3 元数据属性 60

3.3.1 基本属性 60

3.3.2 类相关属性 61

3.3.3 操作符重载属性 62

3.4 元数据关系 62

3.5 元数据运算 63

3.5.1 基本运算 63

3.5.2 特殊运算 65

3.6 解析函数元数据 67

3.7 实现原理 68

3.7.1 integral_constant 68

3.7.2 is_integral 69

3.8 应用示例 70

3.8.1 conditional 70

3.8.2 identity_type 71

3.8.3 declval 72

3.9 总结 73

第4章 实用工具 75

4.1 compressed_pair 75

4.1.1 空类 75

4.1.2 类摘要 77

4.1.3 构造与赋值 78

4.1.4 用法 78

4.1.5 实现原理 79

4.1.6 功能扩展 80

4.2 checked_delete 83

4.2.1 函数的用法 84

4.2.2 函数对象的用法 85

4.2.3 带检查的删除 87

4.2.4 实现原理 89

4.2.5 使用建议 90

4.3 addressof 90

4.3.1 用法 91

4.3.2 实现原理 92

4.3.3 使用建议 93

4.4 base_from_member 93

4.4.1 类摘要 93

4.4.2 用法 94

4.4.3 进一步的用法 96

4.5 conversion 98

4.5.1 标准转型操作符 98

4.5.2 多态对象的转型 99

4.5.3 polymorphic_downcast 101

4.5.4 polymorphic_cast 102

4.5.5 对引用转型 103

4.6 numeric conversion 104

4.6.1 bounds 104

4.6.2 numeric_cast 107

4.7 pointer 108

4.7.1 get_pointer 108

4.7.2 pointer_cast 109

4.7.3 pointee 110

4.7.4 indirect_reference 111

4.7.5 pointer_to_other 111

4.7.6 compare_pointees 113

4.7.7 pointer_traits 114

4.8 总结 115

第5章 迭代器 117

5.1 概述 117

5.1.1 迭代器模式 117

5.1.2 标准迭代器 118

5.1.3 新式迭代器 119

5.1.4 标准迭代器工具120

5.1.5 迭代器与算法 122

5.2 next_prior 122

5.2.1 函数声明 123

5.2.2 用法 124

5.2.3 C 11/14标准125

5.3 iterator_traits 125

5.3.1 标准迭代器特征类126

5.3.2 类摘要 127

5.3.3 用法 127

5.4 iterator_facade 128

5.4.1 迭代器的核心操作128

5.4.2 类摘要 129

5.4.3 用法 131

5.5 iterator_adaptor 135

5.5.1 类摘要 135

5.5.2 用法 136

5.6 迭代器工具 139

5.6.1 共享容器迭代器139

5.6.2 发生器迭代器 141

5.6.3 逆向迭代器 143

5.6.4 间接迭代器 144

5.6.5 计数迭代器 145

5.6.6 函数输入迭代器148

5.6.7 函数输出迭代器151

5.6.8 过滤迭代器 153

5.6.9 转换迭代器 155

5.6.10 索引迭代器 157

5.6.11 组合迭代器 159

5.7 总结 161

第6章 区间 163

6.1 概述 163

6.2 特征元函数 164

6.3 操作函数 165

6.4 标准算法 166

6.4.1 返回原区间的算法167

6.4.2 返回定制区间的算法168

6.5 迭代器区间类 170

6.5.1 类摘要 170

6.5.2 用法 171

6.6 辅助工具 173

6.6.1 sub_range 173

6.6.2 counting_range 174

6.6.3 istream_range 174

6.6.4 irange 175

6.6.5 combined_range 175

6.6.6 any_range 176

6.7 适配器 178

6.7.1 适配器列表 178

6.7.2 用法 179

6.7.3 实现原理 180

6.8 其他议题 181

6.8.1 自定义区间类型181

6.7.2 连接区间 182

6.9 总结 182

第7章 函数对象 185

7.1 hash 185

7.1.1 类摘要 186

7.1.2 用法 186

7.1.3 实现原理 187

7.1.4 扩展hash 188

7.2 mem_fn 191

7.2.1 工作原理 191

7.2.2 用法 192

7.2.3 其他议题 193

7.3 factory 194

7.3.1 类摘要 194

7.3.2 用法 195

7.3.3 value_factory 197

7.4 总结 197

第8章 指针容器 199

8.1 概述 199

8.1.1 入门示例 200

8.1.2 指针容器的优缺点203

8.1.3 可克隆概念 204

8.1.4 克隆分配器 205

8.1.5 指针容器的分类206

8.2 指针容器的共通功能208

8.2.1 模板参数 208

8.2.2 构造与赋值 210

8.2.3 访问元素 211

8.2.4 其他功能 213

8.3 序列指针容器适配器214

8.3.1 配置元函数 214

8.3.2 类摘要 215

8.3.3 接口解说 216

8.3.4 代码示例 216

8.4 ptr_vector 217

8.4.1 类摘要 218

8.4.2 用法 219

8.5 空指针处理 220

8.5.1 禁用空指针 220

8.5.2 使用空指针 220

8.5.3 空对象模式 221

8.6 关联指针容器的共通功能223

8.6.1 类摘要 223

8.6.2 接口解说 224

8.7 集合指针容器适配器225

8.7.1 配置元函数 225

8.7.2 ptr_set_adapter 226

8.8 ptr_set 227

8.8.1 类摘要 227

8.8.2 用法 228

8.9 ptr_unordered_set 228

8.9.1 类摘要 228

8.9.2 用法 229

8.10 映射指针容器适配器230

8.10.1 配置元函数 230

8.10.2 ptr_map_adapter 231

8.11 ptr_map 233

8.11.1 类摘要 233

8.11.2 用法 234

8.12 ptr_unordered_map 234

8.12.1 类摘要 235

8.12.2 用法 235

8.13 使用assign库 236

8.13.1 向容器添加元素236

8.13.2 初始化容器元素237

8.14 使用算法 238

8.14.1 标准算法 238

8.14.2 序列指针容器的算法242

8.14.3 关联指针容器的算法244

8.15 其他议题 246

8.15.1 异常 247

8.15.2 间接函数对象 247

8.15.3 插入迭代器 248

8.15.4 使用视图分配器248

8.15.5 可克隆性的再讨论249

8.16 总结 250

第9章 侵入式容器 251

9.1 概述 251

9.1.1 手工实现链表 252

9.1.2 intrusive库介绍 253

9.2 入门示例 254

9.2.1 使用基类挂钩 254

9.2.2 使用成员挂钩 255

9.3 基本概念 257

9.3.1 节点 257

9.3.2 节点特征 258

9.3.3 节点算法 258

9.3.4 值特征 260

9.3.5 挂钩 260

9.3.6 选项 262

9.3.7 处置器 263

9.3.8 克隆 264

9.4 链表 264

9.4.1 节点和算法 265

9.4.2 基类挂钩 266

9.4.3 成员挂钩 267

9.4.4 类摘要 267

9.4.5 基本用法 269

9.4.6 特有用法 271

9.5 有序集合 275

9.5.1 节点和算法 275

9.5.2 基类挂钩 276

9.5.3 成员挂钩 277

9.5.4 set类摘要 277

9.5.5 基本用法 279

9.5.6 特有用法 280

9.6 无序集合 282

9.6.1 节点和算法 282

9.6.2 基类挂钩 283

9.6.3 成员挂钩 284

9.6.4 类摘要 284

9.6.5 基本用法 286

9.6.6 unordered_set的特有用法 288

9.7 其他议题 290

9.7.1 链接模式 290

9.7.2 同时使用多个挂钩291

9.7.3 万能挂钩 293

9.8 总结 293