《深入实践C++模板编程》
基本信息
作者: 温宇杰
出版社:机械工业出版社
ISBN:9787111427544
上架时间:2013-6-13
出版日期:2013 年6月
开本:16开
页码:1
版次:1-1
所属分类:计算机
更多关于 》》》《深入实践C++模板编程》
内容简介
计算机书籍
c++模板编程领域的经典著作,由资深c++开发工程师撰写。本书以透彻分析原理为前提,深入讲解了模板编程的基本原理、标准库中算法与容器等模板的实现原理;以实践为导向,通过大量的模板向读者展示了如何使用模板进行编程以及如何编写自定义模板。除此之外,本书还总结了各种常用的模板编程技巧、c++11标准中的模板新特性和新语法,以及c++11中新增的其他语言特性。
《深入实践c++模板编程》共16章,分为四部分:第一部分(第1~4章)首先介绍了模板编程的基本概念与用法,然后重点讨论了编译器对模板的具体实现方法及其局限,读者可以通过本部分内容理解模板的基本原理并自行实现简单的类模板与函数模板。第二部分(第5~9章)对标准库中的算法与容器的实现原理和用法进行了深入地剖析,读者通过本部分内容对标准库中的算法、迭代器与容器之间的关系有深入的理解,从而可以精确调节标准容器的行为,自行开发适用于标准算法的容器类模板。第三部分(第10~13章)讨论了模板编程的高级技巧,如模板编程中“概念”的设计、控制代码量的技术、编译期逻辑的控制以及元编程的基本方法等,读者可以通过本部分内容开发更具规模、更加智能的模板库,并利用元编程技术实现编译期的逻辑演绎与类型推导。第四部分(第14~16章)介绍了c++11标准中的新增语言特性,以及对模板编程的影响。
目录
《深入实践c++模板编程》
前言
第一部分 模板基础
第1章 hello模板 / 2
1.1 为什么需要模板 / 2
1.2 初识函数模板 / 3
1.2.1 函数模板的实现 / 3
1.2.2 如何使用函数模板 / 4
1.2.3 模板参数自动推导 / 5
1.2.4 模板参数默认值 / 7
1.2.5 模板函数的静态变量 / 8
1.3 如何处理函数模板中的函数体 / 8
1.3.1 hpp文件还是cpp文件 / 9
1.3.2 链接器如何识别重复模板实例 / 10
1.4 尴尬的export template / 13
1.4.1 什么是外名模板 / 13
1.4.2 c++编译器对外名模板的处理 / 14
1.5 本章小结 / 15
第2章 类亦模板 / 16
2.1 类型无关的数据结构 / 16
.2.2 实践——栈类模板 / 17
2.2.1 栈类模板实例 / 17
2.2.2 栈类模板衍生子类模板实例 / 20
2.3 突破——异质链表 / 21
2.4 构造元组 / 23
2.4.1 通过嵌套实现元组 / 23
2.4.2 用类实现元组 / 24
2.5 类模板的用法 / 25
2.5.1 成员函数模板 / 25
2.5.2 友元函数模板 / 26
2.6 类模板的静态成员 / 27
2.7 本章小结 / 30
第3章 模板参数类型详解 / 31
3.1 整数模板参数 / 31
3.2 函数指针模板参数 / 32
3.3 指针及引用模板参数 / 34
3.4 成员函数指针模板参数 / 35
3.5 模板型模板参数 / 37
3.6 本章小结 / 39
第4章 凡事总有“特例” / 40
4.1 从vector[bool]说起 / 40
4.2 特例的多种写法 / 44
4.3 特例匹配规则 / 46
4.4 函数模板的特例与重载 / 47
4.4.1 分辨重载 / 50
4.4.2 编译期的条件判断逻辑 / 52
4.5 本章小结 / 54
第二部分 标准库中的模板
第5章 容器、迭代器与算法 / 56
5.1 容器的定义 / 56
5.2 容器的实现 / 56
5.2.1 java的实现方法 / 57
5.2.2 c++的实现方法 / 60
5.3 容器与迭代器 / 62
5.3.1 链表容器与迭代器 / 64
5.3.2 集合容器与迭代器 / 67
5.4 迭代器与算法 / 71
5.4.1 求容器中元素之和 / 71
5.4.2 实例:微型算法库 / 73
5.5 容器与迭代器的分类 / 75
5.6 容器与算法的关系 / 76
5.7 迭代器的陷阱 / 76
5.8 本章小结 / 77
第6章 标准库中的容器 / 79
6.1 容器的分类及基本要求 / 79
6.2 序列型容器 / 81
6.2.1 变长数组vector / 82
6.2.2 双向链表list / 84
6.2.3 双端序列deque / 85
6.3 容器转换器 / 87
6.3.1 栈stack与队列queue / 87
6.3.2 优先队列priority_queue / 88
6.4 关联型容器 / 89
6.4.1 基本数据结构 / 89
6.4.2 内嵌类型定义 / 92
6.4.3 构造关联型容器 / 92
6.4.4 插入数据 / 93
6.4.5 数据的删除、查找与访问 / 96
6.4.6 整数值专用集合bitset / 98
6.5 散列表容器 / 99
6.5.1 基本数据结构 / 99
6.5.2 散列函数 / 100
6.5.3 桶 / 101
6.6 其他c++11新容器 / 104
6.6.1 定长数组array / 104
6.6.2 单向链表forward_list / 105
6.7 本章小结 / 106
第7章 隐形的助手——分配器 / 107
7.1 分配器的基本要求 / 107
7.2 交换容器内容时的特殊处理 / 110
7.3 有态分配器与无态分配器 / 112
7.4 实践:池分配器 / 114
7.4.1 池分配器模板类的设计 / 115
7.4.2 对象池的实现 / 116
7.4.3 定位构造 / 121
7.4.4 池分配器的实现 / 122
7.4.5 测试池分配器 / 127
7.4.6 实际运行 / 129
7.5 本章小结 / 131
第8章 标准库中的迭代器 / 132
8.1 迭代器分类 / 132
8.1.1 输入迭代器 / 132
8.1.2 前向迭代器 / 133
8.1.3 双向迭代器与跳转迭代器 / 135
8.1.4 输出迭代器 / 136
8.2 迭代器属性类模板 / 137
8.3 迭代器转换器 / 139
8.3.1 反转迭代器 / 139
8.3.2 插入迭代器 / 141
8.4 流迭代器 / 142
8.5 本章小结 / 144
第9章 标准库中的算法 / 145
9.1 算法的共同特征 / 145
9.2 标准库中的常用算法 / 145
9.2.1 foreach的三种写法 / 146
9.2.2 搜索 / 147
9.2.3 计数与比较 / 149
9.2.4 复制、交换、替换与删除 / 149
9.2.5 排序 / 151
9.2.6 二分搜索 / 151
9.2.7 集合运算 / 152
9.2.8 二叉堆操作 / 154
9.2.9 其他算法 / 154
9.3 预设函数对象 / 155
9.3.1 函数对象基类 / 155
9.3.2 运算函数对象 / 156
9.3.3 参数绑定 / 157
9.4 实践:矩阵操作中如何消除循环语句 / 165
9.4.1 跨跃迭代器 / 165
9.4.2 矩阵类模板 / 167
9.4.3 累计迭代器 / 169
9.4.4 矩阵乘法 / 170
9.4.5 矩阵lu分解 / 171
9.4.6 组合迭代器 / 172
9.4.7 没有循环语句的矩阵乘法 / 177
9.5 本章小结 / 178
第三部分 模板编程高级技巧
第10章 专用名词——概念 / 180
10.1 模板的先天不足 / 180
10.2 “概念”的提案及conceptgcc编译器 / 181
10.3 概念语法 / 183
10.3.1 定义概念 / 183
10.3.2 用概念约束模板参数 / 184
10.3.3 概念映射 / 184
10.4 概念模拟库 / 186
10.4.1 概念检查宏 / 187
10.4.2 自定义概念检查 / 189
10.4.3 概念典型 / 190
10.5 本章小结 / 191
第11章 代码膨胀 / 192
11.1 源代码的增加 / 192
11.1.1 代理类的困境 / 192
11.1.2 d语言的方法 / 195
11.2 目标代码的增加 / 196
11.2.1 目标代码膨胀的成因 / 196
11.2.2 目标代码膨胀实例 / 197
11.2.3 改进代码 / 198
11.2.4 测试改进效果 / 206
11.3 本章小结 / 208
第12章 常用模板编程技巧 / 209
12.1 标签与特性 / 209
12.1.1 特性类模板numeric_limits / 209
12.1.2 实例:矩阵与向量乘法 / 211
12.2 编译期多态 / 213
12.2.1 全覆盖的函数模板 / 213
12.2.2 虚函数的启发 / 213
12.2.3 虚基类模板 / 214
12.3 策略 / 217
12.3.1 策略的产生:再说vector的不足 / 217
12.3.2 为vector添加存储策略 / 218
12.4 伪变长参数模板 / 223
12.4.1 hetero_node的启发 / 224
12.4.2 编译期递归 / 225
12.4.3 访问元组中的数据 / 227
12.5 本章小结 / 230
第13章 元编程 / 231
13.1 c++中的元编程 / 231
13.2 元函数 / 231
13.2.1 元函数的实现 / 231
13.2.2 元函数的调用 / 233
13.3 元容器与元算法 / 235
13.3.1 元容器的实现 / 235
13.3.2 实例:容纳5种类型的元容器 / 236
13.4 类型过滤 / 240
13.4.1 类型过滤元函数的实现 / 240
13.4.2 实例:应用元容器与元算法 / 242
13.5 本章小结 / 244
第四部分 模板与c++11
第14章 右值引用 / 246
14.1 右值引用的产生 / 246
14.1.1 函数的匿名返回值 / 246
14.1.2 返回值优化 / 249
14.2 右值引用基本概念 / 251
14.2.1 左值与非左值 / 251
14.2.2 右值与右值引用 / 252
14.2.3 移动构造与移动赋值 / 252
14.2.4 狭义与广义的右值 / 253
14.2.5 左值强制转义成右值引用 / 254
14.2.6 右值引用变量是左值 / 255
14.3 引用声明符消去规则 / 256
14.3.1 完美转发 / 256
14.3.2 实例:智能的min函数 / 260
14.4 移动与异常 / 263
14.4.1 迁移数据的风险 / 263
14.4.2 关键字noexcept / 265
14.4.3 转义函数模板 / 267
14.4.4 移动的效率问题 / 268
14.5 本章小结 / 269
第15章 模板新语法 / 270
15.1 变长参数模板 / 270
15.1.1 参数包 / 271
15.1.2 参数包的内容 / 272
15.1.3 参数包的展开模式 / 273
15.1.4 遍历参数包的内容 / 274
15.1.5 轻松实现元组 / 275
15.2 扩展的类型推导机制 / 276
15.2.1 自动类型变量 / 277
15.2.2 提取表达式结果类型 / 278
15.2.3 函数后置返回类型 / 280
15.3 其他模板新特性 / 281
15.3.1 外部模板实例 / 281
15.3.2 模板别名 / 282
15.3.3 连续的右尖括号 / 282
15.4 本章小结 / 283
第16章 c++11新特性集锦 / 284
16.1 λ表达式 / 284
16.1.1 λ表达式语法 / 284
16.1.2 变量捕获 / 285
16.2 初值列表新用法 / 290
16.2.1 构造变量 / 290
16.2.2 初值封装类模板 / 291
16.3 标准容器与算法的变化 / 292
16.3.1 对应右值引用 / 292
16.3.2 对应变长参数模板 / 293
16.3.3 对应初值列表 / 294
16.4 标准元组类模板 / 294
16.5 智能指针 / 296
16.5.1 独占指针unique_ptr / 297
16.5.2 共享指针shared_ptr与weak_ptr / 298
16.6 基于范围的for循环 / 299
16.7 拾遗 / 300
16.8 本章小结 / 301
相关推荐
在深入实践C++模板编程的过程中,我们不仅可以理解模板的基本概念,还可以掌握其高级特性和应用技巧。 首先,我们要理解模板的两种主要形式:函数模板和类模板。函数模板用于定义通用的函数,例如`std::swap`,它...
《深入实践C++模板编程》是一本专注于C++标准模板库(STL)的书籍,作者温宇杰通过这本书深入浅出地介绍了C++模板编程的精髓。STL是C++编程中不可或缺的一部分,它提供了高效、可重用的容器、算法和迭代器,极大地提升...
深入实践C++模板编程-高清-2013年6月,分享给所有需要的人!
《深入实践C++模板编程 温宇杰》这本书无疑是对这一主题的深度探讨,旨在帮助读者掌握模板的精髓,提高编程效率和代码复用性。 函数模板是C++模板的基本形式之一,它定义了一个通用的函数,可以在编译时针对不同的...
C++模板是C++语言中的一个强大特性,它允许程序员创建泛型代码,即能够处理多种数据类型的代码。...深入学习和实践C++模板编程,无论是对初学者还是经验丰富的开发者,都能够进一步提升编程效率和代码质量。
下面我们将深入探讨C++模板元编程的基本概念、应用场景以及相关技巧。 一、模板元编程基础 1. 模板:C++中的模板是泛型编程的核心工具,可以用于创建函数模板和类模板。函数模板允许定义一个通用函数,而类模板...
本书是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例3方面的有用资料,为读者打下C++模板知识的坚实基础。 全书共22章。第1章全面介绍了本书的内容结构和相关情况。第1部分(第2~7章)以教程的风格...
C++模板元编程是一种在编译时执行计算和创建代码的技术,它利用了C++模板系统的能力,将编程任务从运行时转移到了编译时。模板元编程允许开发者编写更高效、更灵活的代码,特别是在处理类型系统和泛型算法时。在本...
《C++模板元编程技术与应用》是一本深入探讨C++模板元编程的书籍,旨在让更多的C++程序员了解并掌握这一技术,从而在编程过程中提高效率和代码质量。模板元编程是C++中一种强大的静态编译时编程技术,它允许程序员在...
深入实践 C 模板编程 C 模板编程是一种强大的编程技术,它允许程序员使用泛型编程的方式来编写可重用的代码,提高代码的灵活性和效率。在深入实践 C 模板编程之前,了解 C 模板的基本概念是非常重要的。 C 模板的...
综上所述,《C++模板元编程实战:一个深度学习框架的初步实现》这本书旨在介绍如何将模板元编程技术应用于构建高效、灵活的深度学习框架,这对于想要深入了解C++高级特性和深度学习底层实现的开发者来说,是一份宝贵...
总的来说,这个“C++高级编程资料和视频”集合将帮助你深入理解C++的高级特性和最佳实践,提升你的编程能力,助你在软件开发领域取得更大的成就。通过系统地学习和实践,你将能够编写出更高效、更健壮的C++程序。
《C++模板中文版》是一本深入探讨C++模板编程技术的专业书籍,旨在帮助读者全面理解和掌握这一核心的C++特性。C++模板是C++语言中的一个强大工具,它允许程序员创建泛型代码,实现代码重用和类型安全。在阅读这本书...
一本好的C++游戏编程入门教材,应该从C++语言的基础语法开始讲解,逐步引导读者掌握面向对象编程、模板、异常处理等高级特性。随后,教材会介绍游戏开发的基本概念,如游戏循环、碰撞检测、粒子系统、动画和音频处理...
在《C++模板编程》、《C++沉思录》和《C++代码设计与重用》这三部合集中,作者深入探讨了C++的核心概念和技术,特别是关于模板编程、设计模式和代码复用的策略。 《C++沉思录》是一部深度剖析C++哲学与实践的著作,...
C++趣味编程是一门引人入胜的课程,旨在帮助初学者理解编程基础,并通过实践探索编程的乐趣。在这个配套课件中,我们将深入探讨C++语言的各个方面,使其成为掌握编程概念的有效工具。 首先,我们要了解C++的基本...
本教程将深入探讨这些主题,结合实例和实践,帮助读者掌握C++高效编程的技巧和策略,无论你是初学者还是有经验的开发者,都能从中受益。通过学习,你将能够编写出更高效、更易于维护的C++代码,为你的编程生涯...
总之,《C++标准模板库编程实战》是一本全面而深入的教程,适合有一定C++基础并希望提升STL使用技巧的开发者。它将引导读者探索C++14的新特性,以及如何有效地利用STL来设计和实现高效、可维护的程序。无论是新手...
在C++编程语言中,模板是一种强大的特性,它允许程序员编写与数据类型无关的代码,从而达到代码复用的目的。模板可以应用于函数和类,分别称为...通过对模板的深入理解和实践,程序员可以写出更加高效、可维护的代码。