图书介绍

深入应用C++11 代码优化与工程级应用【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

深入应用C++11 代码优化与工程级应用
  • 祁宇著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111500698
  • 出版时间:2015
  • 标注页数:414页
  • 文件大小:50MB
  • 文件页数:428页
  • 主题词:C语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

深入应用C++11 代码优化与工程级应用PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一篇 C++11改进我们的程序2

第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::function49

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_traits87

3.1.2 根据条件选择的traits96

3.1.3 获取可调用对象返回类型的traits96

3.1.4 根据条件禁用或启用某种或某些类型traits99

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_traits131

3.3.7 variant的实现134

3.3.8 ScopeGuard140

3.3.9 tuple helper141

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::mutex171

5.2.2 递归互斥量std::recursive mutex172

5.2.3 带超时的互斥量std::timed_mutex和std::recursive_timed_mutex174

5.3 条件变量175

5.4 原子变量179

5.5 call_once/once_flag的使用180

5.6 异步操作181

5.6.1 获取线程函数返回值的类std::future181

5.6.2 协助线程赋值的类std::promise182

5.6.3 可调用对象的包装类std::package_task182

5.6.4 std::promise、std::packaged_task和std::future三者之间的关系183

5.7 线程异步操作函数async184

5.8 总结185

第6章 使用C++11中便利的工具186

6.1 处理日期和时间的chrono库186

6.1.1 记录时长的duration186

6.1.2 表示时间点的time point188

6.1.3 获取系统时钟的clocks190

6.1.4 计时器timer191

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 final和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_storage209

7.4.6 std::max_align_t和std::align操作符211

7.5 C++11新增的便利算法211

7.6 总结216

第二篇 C++11工程级应用218

第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的SmartDB316

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开发一个Iinq to objects库336

14.1 LINQ介绍336

14.1.1 LINQ语义336

14.1.2 Linq标准操作符(C#)337

14.2 C++中的LINQ339

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 TaskGroup372

15.6.2 WhenAll376

15.6.3 WhenAny378

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中的Proactor391

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

热门推荐