序
前言
第1章 C++概述
1.1 为什么是C++
1.1.1 零成本抽象
1.1.2 可移植性
1.2 与其他语言对比
1.2.1 竞争语言和性能
1.2.2 与性能无关的C++语言特性
1.2.3 C++的局限性
1.3 本书使用的库和编译器
1.4 总结
第2章 C++必备技能
2.1 用auto关键字进行自动类型推断
2.1.1 在函数签名中使用auto
2.1.2 对变量使用auto
2.1.3 指针的常量传播
2.2 移动语义
2.2.1 拷贝构造函数,交换与移动
2.2.2 资源获取与五法则
2.2.3 具名变量和右值
2.2.4 默认移动语义和零法则
2.2.5 将&&修饰符应用于类成员函数
2.2.6 当拷贝被省略时,无论如何都不要移动
2.2.7 适时使用值传递
2.3 设计带有错误处理的接口
2.3.1 契约
2.3.2 错误处理
2.4 函数对象和lambda表达式
2.4.1 C++lambda的基本语法
2.4.2 捕获子句
2.4.3 为lambda表达式分配C函数指针
2.4.4 Lambda类型
2.4.5 lambda表达式和std::function
2.4.6 泛型lambda
2.5 总结
第3章 分析和度量性能
3.1 渐进复杂度和大O符号
3.1.1 增长率
3.1.2 均摊时间复杂度
3.2 度量什么?该如何度量?
3.2.1 性能特征
3.2.2 运行时间的提升
3.2.3 性能计数器
3.2.4 最佳实践:性能测试
3.3 了解代码和热点
3.3.1 插桩型剖析器
3.3.2 采样型剖析器
3.4 微基准测试
3.4.1 阿姆达尔定律
3.4.2 微基准测试的隐患
3.4.3 微基准测试实例
3.5 总结
第4章 数据结构
4.1 计算机内存的特性
4.2 标准库容器
4.2.1 序列式容器
4.2.2 关联式容器
4.2.3 容器适配器
4.3 使用视图
……
第5章 算法
第6章 范围和视图
第7章 内存管理
第8章 编译时编程
第9章 Utilities基础
第10章 代理对象和惰性求值
第11章 并发
第12章 协程和惰性生成器
第13章 用协程进行异步编程
第14章 并行算法