当前位置:首页 > 程序设计 >
《深入实践C++模板编程》电子书封面

深入实践C++模板编程

  • 发布时间:2019年07月08日 13:56:51
  • 作者:温宇杰
  • 大小:76.6 MB
  • 类别:C++电子书
  • 格式:PDF
  • 版本:高清版
  • 评分:9.2

    深入实践C++模板编程 PDF 高清版

      给大家带来的一篇关于C++相关的电子书资源,介绍了关于实践、C++、模板、编程方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小76.6 MB,温宇杰编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:9.7。

      内容介绍

      深入实践C++模板编程

      内容介绍

      C++模板编程领域的经典书籍,由杰出C++研发工程师编写。这书以仔细剖析基本原理为前提条件,深层次解读了模板编程的基本概念、标准库中优化算法与器皿等模板的建立基本原理;以实践活动为导向性,根据很多的模板向小读者展现了怎么使用模板开展编程及其怎样撰写自定模板。此外,这书还小结了各种各样常见的模板编程方法、C++12规范中的模板新特点和新英语的语法,及其C++12中增加的别的語言特点。

      全书共18章,分成四一部分:弟一部分(第1~4章)最先详细介绍了模板编程的基本要素与使用方法,随后重中之重探讨了编译器对模板的主要建立方式以及局限性,小读者能够根据本一部分內容了解模板的基本概念并自主建立简易的类模板与涵数模板。第五一部分(第5~9章)对标准库中的优化算法与器皿的建立基本原理和使用方法开展了深层次地分析,小读者根据本一部分內容对标准库中的优化算法、迭代器与器皿之间的关系有深层次的了解,进而能够精准调整规范器皿的个人行为,自主开发设计适用规范优化算法的容器类模板。第二一部分(第12~12章)探讨了模板编程的高級方法,如模板编程中“定义”的设计方案、控制代码量的技术性、编译期逻辑性的操纵及其元编程的基础方式等,小读者能够根据本一部分內容开发设计具有经营规模、更为智能化的模板库,并运用元编程技术建立编译期的逻辑性演译与种类求算。第三一部分(第13~18章)详细介绍了C++12规范中的增加語言特点,及其对模板编程的危害。

      目录

      • 前言
      • 第一部分 模板基础
      • 第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说起 / 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

      学习笔记

      Java编程一维数组转换成二维数组实例代码

      简介: 由于经常在使用矩阵进行计算时,会首先将一维数组转为二维数组。因此,在这里记录一下,也希望对他人有帮助。 实例代码: package deal;public class ArryTest {public static void main(String[] args) {//创建一个一维数组 0,1,2,3...,10double [] c= new double[10];for (int i = 0; i c.length; i++) {c[i]=i;}double[][] testArr=TwoArry(c);for (int i = 0; i testArr.length; i++) {for (int j = 0; j testArr[i].length; j++) {System.out.println(testArr[i][j]);}}}//一维数组转化为二维数组public static double[][] TwoArry(double[] onedouble){double[][] arr=new double[1][onedouble.length];for (int i = 0; i onedouble.length; i++) {arr[0][i]=onedouble[i];}return arr;}} 运行结果: 总结 以上就是本文关于Java编程一维数组转……

      Java编程文件遍历之指定遍历的层数详细代码

      遍历就是把每个元素都访问一次.比如一个二叉树,遍历二叉树意思就是把二叉树中的每个元素都访问一次 本例演示了“文件遍历时,指定遍历的层数”的实现方式。 1.例子代码 package com.myjava.test;import java.io.File;import java.util.ArrayList;import java.util.List;public class JavaTest {/*** @param args*/public static void main(String[] args) {JavaTest jt = new JavaTest();String path = "E:\\filetest";File file = new File(path);try {jt.getFile(file, 0);}catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}int mDirLevel = 2;//层数private void getFile(File file, int dirLevel) throws Exception {if (mDirLevel != -1 dirLevel mDirLevel) {dirLevel = 0;return;}if (file == null) {return;}if (file.exists()) {if (fil……

      Java编程实现暴力破解WIFI密码的方法分析

      本文实例讲述了Java编程实现暴力破解WIFI密码的方法。分享给大家供大家参考,具体如下: 开始进入正题。在网上找了很多wifi破解工具,都是linux平台下用的,然后还不支持虚拟机装linux。因为很多笔记本装虚拟机都识别不了内置网卡。所以得把系统刻到U盘,然后用U盘启动。但是我现在穷得连一条内裤都没有了,哪来的U盘啊。于是就决定自己写,而且还得用Java写,写了我还得在windows上运行。 一、准备工作 首先你得需要一台能连wifi的电脑, 然后你的电脑得支持Java环境, 最后你周围得有无线网络。 ok,话不多说,说开撸,老夫就要开撸。于是网上找到了windows下cmd无线网络操作的相关命令。如下:……

      Java并发编程学习之ThreadLocal源码详析

      前言 多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的,多线程访问同一个共享变量特别容易出现并发问题,特别是多个线程需要对一个共享变量进行写入时候,为了保证线程安全, 一般需要使用者在访问共享变量的时候进行适当的同步,如下图所示: 可以看到同步的措施一般是加锁,这就需要使用者对锁也要有一定了解,这显然加重了使用者的负担。那么有没有一种方式当创建一个变量的时候,每个线程对其进行访问的时候访问的是自己线程的变量呢?其实ThreaLocal就可以做这个事情,注意一下,ThreadLocal的出现并不是为了解决上……

      以上就是本次介绍的C++电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:Scala集合技术手册

      下一篇:Linux集群和自动化运维

      展开 +

      收起 -

      • 《深入实践C++模板编程》PDF下载

      下载地址:百度网盘下载
      C++相关电子书
      C++语法详解
      C++语法详解 高清影印版

      C++语法详解适合有一定C++基础、对C++的语法有疑惑、想深入了解C++语法细节的人员阅读。《C++语法详解》同时也可以作为解决C++语法问题的参考书;对于学习过C++或已精通C++的人员,也是一本不错的资料查阅手册

      立即下载
      数字图像处理与机器视觉:Visual C++与Matlab实现
      数字图像处理与机器视觉:Visual C++与Matlab实现 全书扫描第2版

      本书将理论知识、科学研究和工程实践有机结合起来,内容涉及数字图像处理和识别技术的方方面面,结构紧凑,内容深入浅出,讲解图文并茂,感兴趣的可以下载学习

      立即下载
      C++ Primer Plus
      C++ Primer Plus 超清第6版

      畅销20余年的C++编程入门教程 近百万程序员的C++编程启蒙教程 技术大牛案头常备的工具书 针对C++11标准库更新 蔡学镛 孟岩 高博倾力推荐

      立即下载
      OpenCV算法精解:基于Python与C++
      OpenCV算法精解:基于Python与C++ 原书完整版

      这是一本以OpenCV 为工具学习数字图像处理的入门书,由浅入深的讲解阐述基本概念、数学原理、C++ 实现、Python 实现相结合的方法,适合入门图像处理和计算机视觉领域的初学者阅读

      立即下载
      C++从入门到精通
      C++从入门到精通 带源码第3版

      本书是讲解了C++编程入门经典,零基础学c++,详细讲解了C++语言的基础知识,包含16小时语音视频、881个实例、371项面试真题、616项测试,涉及范例案例、视频教程

      立即下载
      C++入门经典
      C++入门经典 原书第5版

      本书通过短小精悍的程序详细阐述了基本的C++编程概念,每章都提供了示例程序清单,并辅以示例输出和代码分析,本书针对C++初学者编写的,不要求读者有C语言方面的背景知识

      立即下载
      C和C++程序员面试秘笈
      C和C++程序员面试秘笈 完整影印版

      众多语言都从C/C 有所借鉴,所以说C/C 的语言基础对从事软件开发的人员来说重要。C和C 程序员面试秘笈》是一本解析C/C 面试题的书,可以帮助求职者更好地准备面试。感兴趣的可以了解一下

      立即下载
      读者留言
      leichunlei

      leichunlei 提供上传

      资源
      47
      粉丝
      30
      喜欢
      250
      评论
      2

      Copyright 2018-2020 www.xz577.com 码农之家

      投诉 / 推广 / 赞助:QQ:520161757