读书频道 > 网站 > 网页设计 > 深入应用C++11:代码优化与工程级应用
目录
15-07-07    下载编辑
收藏    我要投稿   
在StackOverflow的最近一次世界性调查中,C++11在所有的编程语言中排名第二, C++11受到程序员的追捧是毫不意外的,因为它就像C++之父Bjarne Stroustrup说的:它看起来就像一门新的语言。C++11新增加了相当多的立即去当当网订购
前言
第一篇 C++11改进我们的程序
第1章 使用C++11让程序更简洁、更现代  2
1.1 类型推导  2
1.1.1 auto类型推导  2
1.1.2 decltype关键字  9
1.1.3 返回类型后置语法——auto和decltype的结合使用  14
1.2 模板的细节改进  16
1.2.1 模板的右尖括号  16
1.2.2 模板的别名  18
1.2.3 函数模板的默认模板参数  20
1.3 列表初始化  22
1.3.1 统一的初始化  23
1.3.2 列表初始化的使用细节  25
1.3.3 初始化列表  29
1.3.4 防止类型收窄  32
1.4 基于范围的for循环  34
1.4.1 for循环的新用法  34
1.4.2 基于范围的 for循环的使用细节  36
1.4.3 让基于范围的 for循环支持自定义类型  40
1.5 std::function和bind绑定器  47
1.5.1 可调用对象  47
1.5.2 可调用对象包装器——std::function  49
1.5.3 std::bind绑定器  52
1.6 lambda表达式  56
1.6.1 lambda表达式的概念和基本用法  56
1.6.2 声明式的编程风格,简洁的代码  59
1.6.3 在需要的时间和地点实现闭包,使程序更灵活  60
1.7 tupe元组  61
1.8 总结  63
第2章 使用C++11改进程序性能  64
2.1 右值引用  64
2.1.1 &&的特性  65
2.1.2 右值引用优化性能,避免深拷贝  71
2.2 move语义  77
2.3 forward和完美转发  78
2.4 emplace_back减少内存拷贝和移动  81
2.5 unordered container无序容器  83
2.6 总结  85
第3章 使用C++11消除重复,提高代码质量  86
3.1 type_traits——类型萃取  86
3.1.1 基本的type_traits  87
3.1.2 根据条件选择的traits  96
3.1.3 获取可调用对象返回类型的traits  96
3.1.4 根据条件禁用或启用某种或某些类型traits  99
3.2 可变参数模板  103
3.2.1 可变参数模板函数  103
3.2.2 可变参数模板类  107
3.2.3 可变参数模板消除重复代码  111
3.3 可变参数模版和type_taits的综合应用  114
3.3.1 optional的实现  114
3.3.2 惰性求值类lazy的实现  118
3.3.3 dll帮助类  122
3.3.4 lambda链式调用  126
3.3.5 any类的实现  128
3.3.6 function_traits  131
3.3.7 variant的实现  134
3.3.8 ScopeGuard  140
3.3.9 tuple_helper  141
3.4 总结  153
第4章 使用C++11解决内存泄露的问题  155
4.1 shared_ptr共享的智能指针  155
4.1.1 shared_ptr的基本用法  156
4.1.2 使用shared_ptr需要注意的问题  157
4.2 unique_ptr独占的智能指针  159
4.3 weak_ptr弱引用的智能指针  161
4.3.1 weak_ptr基本用法  161
4.3.2 weak_ptr返回this指针  162
4.3.3 weak_ptr解决循环引用问题  163
4.4 通过智能指针管理第三方库分配的内存  164
4.5 总结  166
第5章 使用C++11让多线程开发变得简单  167
5.1 线程  167
5.1.1 线程的创建  167
5.1.2 线程的基本用法  170
5.2 互斥量  171
5.2.1 独占互斥量std::mutex  171
5.2.2 递归互斥量std::recursive_mutex  172
5.2.3 带超时的互斥量std::timed_mutex和std::recursive_timed_mutex  174
5.3 条件变量  175
5.4 原子变量  179
5.5 call_once/once_flag的使用  180
5.6 异步操作  181
5.6.1 获取线程函数返回值的类std::future  181
5.6.2 协助线程赋值的类 std::promise  182
5.6.3 可调用对象的包装类std::package_task  182
5.6.4 std::promise、std::packaged_task和std::future三者之间的关系  183
5.7 线程异步操作函数async  184
5.8 总结  185
第6章 使用C++11中便利的工具  186
6.1 处理日期和时间的chrono库  186
6.1.1 记录时长的duration  186
6.1.2 表示时间点的time point  188
6.1.3 获取系统时钟的clocks  190
6.1.4 计时器timer  191
6.2 数值类型和字符串的相互转换  193
6.3 宽窄字符转换  195
6.4 总结  196
第7章 C++11的其他特性  197
7.1 委托构造函数和继承构造函数  197
7.1.1 委托构造函数  197
7.1.2 继承构造函数  199
7.2 原始的字面量  201
7.3 f?inal和override关键字  203
7.4 内存对齐  204
7.4.1 内存对齐介绍  204
7.4.2 堆内存的内存对齐  207
7.4.3 利用alignas指定内存对齐大小  207
7.4.4 利用alignof和std::alignment_of获取内存对齐大小  208
7.4.5 内存对齐的类型std::aligned_storage  209
7.4.6 std::max_align_t和std::align操作符  211
7.5 C++11新增的便利算法  211
7.6 总结  216
第二篇 C++11工程级应用
第8章 使用C++11改进我们的模式  218
8.1 改进单例模式  218
8.2 改进观察者模式  223
8.3 改进访问者模式  227
8.4 改进命令模式  232
8.5 改进对象池模式  236
8.6 总结  240
第9章 使用C++11开发一个半同步半异步线程池  241
9.1 半同步半异步线程池介绍  241
9.2 线程池实现的关键技术分析  242
9.3 同步队列  243
9.4 线程池  247
9.5 应用实例  250
9.6 总结  251
第10章 使用C++11开发一个轻量级的AOP库  252
10.1 AOP介绍  252
10.2 AOP的简单实现  253
10.3 轻量级的AOP框架的实现  255
10.4 总结  260
第11章 使用C++11开发一个轻量级的IoC容器  261
11.1 IoC容器是什么  261
11.2 IoC创建对象  265
11.3 类型擦除的常用方法  267
11.4 通过Any和闭包来擦除类型  269
11.5 创建依赖的对象  273
11.6 完整的IoC容器  275
11.7 总结  283
第12章 使用C++11开发一个对象的消息总线库  284
12.1 消息总线介绍  284
12.2 消息总线关键技术  284
12.2.1 通用的消息定义  285
12.2.2 消息的注册  285
12.2.3 消息分发  289
12.2.4 消息总线的设计思想  289
12.3 完整的消息总线  292
12.4 应用实例  297
12.5 总结  301
第13章 使用C++11封装sqlite库  302
13.1 sqlite基本用法介绍  303
13.1.1 打开和关闭数据库的函数  304
13.1.2 执行SQL语句的函数  305
13.2 rapidjson基本用法介绍  310
13.2.1 解析json字符串  310
13.2.2 创建json对象  311
13.2.3 对rapidjson的一点扩展  315
13.3 封装sqlite的SmartDB  316
13.3.1 打开和关闭数据库的接口  317
13.3.2 Excecute接口  319
13.3.3 ExecuteScalar接口  323
13.3.4 事务接口  325
13.3.5 ExcecuteTuple接口  325
13.3.6 json接口  327
13.3.7 查询接口  329
13.4 应用实例  332
13.5 总结  335
第14章 使用C++11开发一个linq to objects库  336
14.1 LINQ介绍  336
14.1.1 LINQ语义  336
14.1.2 Linq标准操作符(C#)  337
14.2 C++中的LINQ  339
14.3 LINQ实现的关键技术  340
14.3.1 容器和数组的泛化  341
14.3.2 支持所有的可调用对象  344
14.3.3 链式调用  345
14.4 linq to objects的具体实现  347
14.4.1 一些典型LINQ操作符的实现  347
14.4.2 完整的linq to objects的实现  349
14.5 linq to objects的应用实例  358
14.6 总结  360
第15章 使用C++11开发一个轻量级的并行task库  361
15.1 TBB的基本用法  362
15.1.1 TBB概述  362
15.1.2 TBB并行算法  362
15.1.3 TBB的任务组  365
15.2 PPL的基本用法  365
15.2.1 PPL任务的链式连续执行  365
15.2.2 PPL的任务组  366
15.3 TBB和PPL的选择  367
15.4 轻量级的并行库TaskCpp的需求  367
15.5 TaskCpp的任务  368
15.5.1 task的实现  368
15.5.2 task的延续  369
15.6 TaskCpp任务的组合  372
15.6.1 TaskGroup  372
15.6.2 WhenAll  376
15.6.3 WhenAny  378
15.7 TaskCpp并行算法  381
15.7.1 ParallelForeach:并行对区间元素执行某种操作  381
15.7.2 ParallelInvoke:并行调用  382
15.7.3 ParallelReduce:并行汇聚  383
15.8 总结  386
第16章  使用C++11开发一个简单的通信程序  387
16.1 反应器和主动器模式介绍  387
16.2 asio中的Proactor  391
16.3 asio的基本用法  394
16.3.1 异步接口  395
16.3.2 异步发送  397
16.4 C++11结合asio实现一个简单的服务端程序  399
16.5 C++11结合asio实现一个简单的客户端程序  405
16.6 TCP粘包问题的解决  408
16.7 总结  413
参考文献  414
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站