书籍详情

C++新经典:模板与泛型编程

C++新经典:模板与泛型编程

作者:王健伟

出版社:清华大学出版社

出版时间:2022-03-01

ISBN:9787302584643

定价:¥89.00

购买这本书可以去
内容简介
  本书是一部详细讲解C 模板与泛型编程知识的书,针对的是希望系统学习C 模板与泛型编程、元编程相关开发知识的中高级C 开发者,所讲解的知识具备一定的难度,书籍包含纸质图书以及教学源代码文件。编写初衷是帮助读者解决各种模板与泛型编程中的语法问题,以免在阅读他人所写的泛型编程代码(如C 标准库代码、Boost库代码)时磕磕绊绊甚至进行不下去。此外,书中也会对一些比较有商业价值的源码进行适当的分析和讲解,以进一步提高读者的实战能力,更好的让读者利用模板与泛型编程技术编写可复用的高质量代码以及供第三方开发者使用的接口库。 书籍有如下比较明显的特点:①注重细节,注重基础;②讲解难度适宜,范例由浅入深;③内容比较全面;④支持C 11/14/17新标准。 全书共分7章:第1章搭建C 编程环境,第2~3章讲述模板开发的基础和进阶知识,第4章介绍C 标准库中常用的各种模板,第5~6章详细通过众多范例展示萃取技术、策略技术以及元编程,第7章动手编写STL中的list容器和对应的迭代器实现源码以期望读者对list容器的实现细节有清晰掌握并触类旁通。
作者简介
  王健伟: 男,1976年9月生,网名狂想(KuangXiang),1995年毕业于哈尔滨工程大学计算机及应用专业,拥有20多年软件开发经验,参与开发过数十个实际项目,涉及网络通信、网络安全、网络游戏等领域,具备极其深厚的软件开发实战经验。曾参与创办深圳知名网络安全公司安络科技有限公司,是中国首套网络安全在线扫描评估系统项目负责人、全球同服独立游戏《冒险之路》制作人。
目录
第1章 C 编程环境介绍 
1.1 C 编程环境搭建说明
1.2 创建基本的能运行的C 程序 
1.3 Visual Studio中程序的调试方法
1.3.1 普通的断点调试(跟踪调试)
1.3.2 学会调试时查看内存中的内容
1.3.3  “快速监视”对话框
1.3.4 查看“反汇编”窗口
1.4 开启Visual Studio 2019对C 标准的编译支持
第2章 模板基础知识
2.1 函数模板
2.1.1 基本范例
2.1.2 实例化
2.1.3 模板参数的推断
2.1.4 重载
2.1.5 特化
2.1.6 默认参数
2.1.7 非类型模板参数
2.2 类模板、变量模板与别名模板
2.2.1 类模板的基本范例和模板参数的推断
2.2.2 类模板的特化
2.2.3 默认参数
2.2.4 类型别名
2.2.5 非类型模板参数
2.2.6 成员函数模板
2.2.7 类/类模板中的类模板(类模板的嵌套)
2.2.8 变量模板与成员变量模板
2.2.9 别名模板与成员别名模板
2.2.10 模板模板参数
2.2.11 共用体模板(联合模板)
2.3 类模板中的友元
2.3.1 友元类
2.3.2 友元函数
2.4 可变参模板
2.4.1 可变参函数模板
2.4.2 折叠表达式
2.4.3 可变参表达式
2.4.4 可变参类模板
2.5 多态在模板中的应用
2.6 模板的特殊继承关系
2.6.1 奇异(奇特)的递归模板模式
2.6.2 混入
2.7 模板代码的组织结构与模板的显式实例化和声明
2.7.1 模板代码的组织结构
2.7.2 模板的显式实例化、模板声明、代码组织结构
第3章 模板进阶知识
3.1 引用
3.1.1 类型区别的基本含义
3.1.2 基本认识
3.1.3 引用资格的剥夺与辨认
3.2 类型推断
3.2.1 如何查看类型推断结果
3.2.2 理解函数模板类型推断
3.2.3 auto类型常规推断
3.3 完美转发
3.3.1 完美转发的概念和步骤演绎
3.3.2 std::forward
3.3.3 普通参数的完美转发
3.3.4 在构造函数模板中使用完美转发范例
3.3.5 在可变参数模板中使用完美转发范例
3.3.6 完美转发失败的情形一例
3.4 std::enable_if的使用
3.4.1 一个简单范例
3.4.2 替换失败并不是一个错误(SFINAE)
3.4.3 enable_if
3.5 类模板中可变参的逐步展开
3.5.1 myclasst继承
3.5.2 myclasst...继承
3.5.3 myclasst...继承
3.5.4 myclasst...继承
第4章 标准库的典型内容
4.1 std::declval
4.1.1 基本概念和常规范例
4.1.2 std::declval返回右值引用类型的原因
4.1.3 推导函数返回值范例
4.2 std::true_type和std::false_type
4.3 std::void_t
4.3.1 源码分析和常规范例
4.3.2 编译器如何选择泛化版本和特化版本
4.3.3 借助void_t和declval实现is_copy_assignable
4.3.4 综合范例
4.4 std::conditional
4.5 std::function的实现
4.5.1 标准库中的std::function
4.5.2 实现类似std::function的功能
4.6 std::remove_all_extents
4.7 std::integer_sequence
4.7.1 正向排列数字生成一个类型Integer_Sequence
4.7.2 逆向排列数字生成一个类型Integer_Sequence_Reverse
4.7.3 将一个数字重复多次生成一个类型Repeat_Integer
4.8 std::is_union、std::is_class和std::integral_constant
4.8.1 std::is_union
4.8.2 std::is_class
4.8.3 std::integral_constant
第5章 萃取技术与策略技术
5.1 萃取技术及固定萃取演示
5.1.1 一个常规范例
5.1.2 迭代器范例
5.1.3 通过容器(数组)类型萃取元素类型范例
5.1.4 引用类型的移除和增加
5.1.5 const修饰符的移除
5.1.6 退化技术
5.2 萃取技术中的值萃取演示
5.2.1 一个常规范例
5.2.2 判断是否为void类型的范例
5.2.3 判断两个类型是否相同
5.3 使用SFINAE特性的信息萃取
5.3.1 用成员函数重载实现is_default_constructible
5.3.2 用成员函数重载实现is_convertible
5.3.3 用成员函数重载实现is_class
5.3.4 用成员函数重载实现is_base_of
5.3.5 用类模板特化实现is_default_constructible
5.4 将trait类模板用作模板参数
5.5 策略技术中的算法策略
5.5.1 常规范例:普通策略类
5.5.2 常规范例:策略类模板
5.5.3 萃取技术与策略技术的比较
第6章 元编程
6.1 术语、元函数
6.1.1 术语
6.1.2 元函数
6.2 混合元编程
6.2.1 常规的计算点积范例
6.2.2 混合元编程计算点积
6.3 typelist实现(类型计算范例)
6.3.1 设计和基本操作接口(算法)
6.3.2 扩展操作接口(算法)
6.3.3 typelist的老式设计与typelist的思考
6.4 tuple实现
6.4.1 重要基础知识回顾
6.4.2 元组基本概念、基础代码的设计和实现
6.4.3 操作接口(算法)
第7章 标准模板库代码
7.1 list容器的简单实现
7.1.1 基础代码
7.1.2 插入新元素前的准备
7.1.3 插入新元素
7.1.4 释放容器中元素所占用的内存
7.2 迭代器设计中的分类目的
7.2.1 迭代器的分类
7.2.2 迭代器分类目的详述
7.3 一个典型算法—find_if的简单实现
猜您喜欢

读书导航