编辑推荐
紧跟C++新11/14标准,详细讲解新特性,
深入探讨"准标准库"——Boost程序库里的迭代器、函数对象、流处理、模板元编程和预处理元编程等高级组件
实用性强,帮助读者深层次地理解掌握现代C++的高级技术和Boost的内部实现机制及用法。
内容丰富、组织得当、概念清晰、讲解细致,是广大C++程序员和爱好者的必备好书。
内容简介
C++的新标准(C++11/14)引入了许多强大易用的新特性新功能,从语言层面深刻地改变了C++的开发范式。
Boost程序库由C++标准委员会部分成员所设立的Boost社区开发并维护,它构造精巧、跨平台、开源并且完全免费,被称为“C++‘准’标准库”,已广泛应用在实际软件开发中。Boost内容涵盖智能指针、文本处理、并发、模板元编程、预处理元编程等许多领域,其范围之广内涵之深甚至要超过C++11/14标准,极大地增强了C++的功能和表现力。
《C++11/14高级编程:Boost程序库探秘(第3版)》基于C++新标准和Boost程序库1.60版,深入探讨了其中的许多特性和高级组件,包括迭代器、函数对象、容器、流处理以及C++语言中复杂并且颇具威力的模板元编程和预处理元编程,具有较强的实用性,可帮助读者深层次地理解掌握现代C++的高级技术和Boost的内部实现机制及用法。
《C++11/14高级编程:Boost程序库探秘(第3版)》内容丰富、结构合理、概念清晰、讲解细致,是广大C++程序员和爱好者的必备好书。
目录
第0章导读1
0.1关于《C++11/14高级编程:Boost程序库探秘(第3版)》1
0.2读者对象2
0.3C++标准3
0.4开发环境3
0.5代码风格3
0.6《C++11/14高级编程:Boost程序库探秘(第3版)》的结构4
0.7如何阅读《C++11/14高级编程:Boost程序库探秘(第3版)》5
0.8《C++11/14高级编程:Boost程序库探秘(第3版)》的源码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.1auto13
1.3.2decltype15
1.3.3decltype(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.1default21
1.5.2delete22
1.5.3override23
1.5.4final24
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.1lambda表达式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.1integral_constant68
3.7.2is_integral69
3.8应用示例70
3.8.1conditional70
3.8.2identity_type71
3.8.3declval72
3.9总结73
第4章实用工具75
4.1compressed_pair75
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.2checked_delete83
4.2.1函数的用法84
4.2.2函数对象的用法85
4.2.3带检查的删除87
4.2.4实现原理89
4.2.5使用建议90
4.3addressof90
4.3.1用法91
4.3.2实现原理92
4.3.3使用建议93
4.4base_from_member93
4.4.1类摘要93
4.4.2用法94
4.4.3进一步的用法96
4.5conversion98
4.5.1标准转型操作符98
4.5.2多态对象的转型99
4.5.3polymorphic_downcast101
4.5.4polymorphic_cast102
4.5.5对引用转型103
4.6numericconversion104
4.6.1bounds104
4.6.2numeric_cast107
4.7pointer108
4.7.1get_pointer108
4.7.2pointer_cast109
4.7.3pointee110
4.7.4indirect_reference111
4.7.5pointer_to_other111
4.7.6compare_pointees113
4.7.7pointer_traits114
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.2next_prior122
5.2.1函数声明123
5.2.2用法124
5.2.3C++11/14标准125
5.3iterator_traits125
5.3.1标准迭代器特征类126
5.3.2类摘要127
5.3.3用法127
5.4iterator_facade128
5.4.1迭代器的核心操作128
5.4.2类摘要129
5.4.3用法131
5.5iterator_adaptor135
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.1sub_range173
6.6.2counting_range174
6.6.3istream_range174
6.6.4irange175
6.6.5combined_range175
6.6.6any_range176
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.1hash185
7.1.1类摘要186
7.1.2用法186
7.1.3实现原理187
7.1.4扩展hash188
7.2mem_fn191
7.2.1工作原理191
7.2.2用法192
7.2.3其他议题193
7.3factory194
7.3.1类摘要194
7.3.2用法195
7.3.3value_factory197
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.4ptr_vector217
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.2ptr_set_adapter226
8.8ptr_set227
8.8.1类摘要227
8.8.2用法228
8.9ptr_unordered_set228
8.9.1类摘要228
8.9.2用法229
8.10映射指针容器适配器230
8.10.1配置元函数230
8.10.2ptr_map_adapter231
8.11ptr_map233
8.11.1类摘要233
8.11.2用法234
8.12ptr_unordered_map234
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.2intrusive库介绍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.4set类摘要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.6unordered_set的特有用法288
9.7其他议题290
9.7.1链接模式290
9.7.2同时使用多个挂钩291
9.7.3万能挂钩293
9.8总结293
第10章多索引容器295
10.1概述295
10.2入门示例296
10.2.1简单的例子296
10.2.2复杂的例子297
10.2.3更复杂的例子299
10.3基本概念302
10.3.1索引302
10.3.2索引说明303
10.3.3键提取器304
10.3.4索引说明列表304
10.3.5索引标签305
10.3.6多索引容器305
10.4键提取器306
10.4.1定义306
10.4.2identity307
10.4.3member308
10.4.4const_mem_fun310
10.4.5mem_fun311
10.4.6global_fun312
10.4.7自定义键提取器313
10.5序列索引313
10.5.1索引说明313
10.5.2类摘要314
10.5.3用法315
10.6随机访问索引317
10.6.1索引说明317
10.6.2类摘要317
10.6.3用法318
10.7有序索引320
10.7.1索引说明320
10.7.2类摘要320
10.7.3基本用法322
10.7.4高级用法323
10.8散列索引326
10.8.1索引说明326
10.8.2类摘要326
10.8.3用法327
10.9修改元素329
10.9.1替换元素329
10.9.2修改元素330
10.9.3修改键332
10.10多索引容器333
10.10.1类摘要333
10.10.2用法334
10.11组合索引键337
10.11.1类摘要337
10.11.2用法338
10.11.3辅助工具339
10.12总结341