图书介绍
C++程序设计 基础、编程抽象与算法策略PDF|Epub|txt|kindle电子书版本网盘下载
![C++程序设计 基础、编程抽象与算法策略](https://www.shukui.net/cover/21/31934607.jpg)
- (英)埃里克·S·罗伯茨(Eric S.Roberts)著 著
- 出版社: 北京:机械工业出版社
- ISBN:7111546962
- 出版时间:2016
- 标注页数:639页
- 文件大小:98MB
- 文件页数:658页
- 主题词:C语言-程序设计
PDF下载
下载说明
C++程序设计 基础、编程抽象与算法策略PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 C++概述1
1.1 你的第一个C++程序1
1.2 C++的历史2
1.2.1 面向对象范型2
1.2.2 C++的演化3
1.3 编译过程3
1.4 C++程序结构4
1.4.1 注释5
1.4.2 包含的库文件6
1.4.3 函数原型6
1.4.4 主程序7
1.4.5 函数定义8
1.5 变量9
1.5.1 变量声明9
1.5.2 命名规则10
1.5.3 局部变量和全局变量11
1.5.4 常量11
1.6 数据类型12
1.6.1 数据类型的概念12
1.6.2 整数类型13
1.6.3 浮点类型13
1.6.4 布尔类型14
1.6.5 字符14
1.6.6 字符串15
1.6.7 枚举类型16
1.6.8 复合类型17
1.7 表达式17
1.7.1 优先级和结合律18
1.7.2 表达式中的混合类型19
1.7.3 整数除法和求余操作符19
1.7.4 类型转换20
1.7.5 赋值操作符20
1.7.6 自增和自减操作符21
1.7.7 布尔运算22
1.8 语句24
1.8.1 简单语句24
1.8.2 块24
1.8.3 if语句24
1.8.4 switch语句25
1.8.5 while语句27
1.8.6 for语句29
本章小结31
复习题32
习题33
第2章 函数与库37
2.1 函数概念37
2.1.1 数学中的函数37
2.1.2 编程中的函数37
2.1.3 使用函数的优点38
2.1.4 函数和算法38
2.2 库39
2.3 在C++中定义函数41
2.3.1 函数原型41
2.3.2 重载42
2.3.3 默认形参数42
2.4 函数调用机制43
2.4.1 函数调用步骤43
2.4.2 组合函数44
2.4.3 追踪组合函数执行过程46
2.5 引用参数49
2.6 接口与实现52
2.6.1 定义error库53
2.6.2 导出数据类型54
2.6.3 导出常量定义56
2.7 接口设计原则58
2.7.1 统一主题的重要性58
2.7.2 简单性与信息隐藏原理59
2.7.3 满足用户需求60
2.7.4 通用工具的优势60
2.7.5 库稳定性的价值60
2.8 随机数库的设计61
2.8.1 随机数与伪随机数61
2.8.2 标准库中的伪随机数62
2.8.3 选择正确的函数集63
2.8.4 构建用户程序65
2.8.5 随机数库的实现65
2.8.6 初始化随机数种子69
2.9 Stanford类库介绍73
2.9.1 简单的输入和输出类库73
2.9.2 Stanford类库中的图形处理程序74
本章小结77
复习题78
习题79
第3章 字符串类string85
3.1 使用字符串作为抽象数据85
3.2 字符串操作87
3.2.1 操作符重载88
3.2.2 从一个字符串中选取字符89
3.2.3 字符串赋值90
3.2.4 提取字符串中的子串90
3.2.5 在一个字符串中进行搜索90
3.2.6 循环遍历字符串中的所有字符91
3.2.7 通过连接扩展字符串92
3.3 <cctype>库93
3.4 修改字符串中的内容94
3.5 遗留的C风格字符串95
3.6 编写字符串应用程序95
3.6.1 回文识别96
3.6.2 将英语翻译成儿童黑话96
3.7 strlib.h库99
本章小结100
复习题100
习题101
第4章 流类108
4.1 格式化输出108
4.2 格式化输入112
4.3 数据文件113
4.3.1 使用文件流114
4.3.2 单个字符的输入/输出115
4.3.3 面向行的输入/输出118
4.3.4 格式化输入/输出119
4.3.5 字符串流121
4.3.6 一个用于控制台输入的更鲁棒的策略122
4.4 类层次123
4.4.1 生物层次123
4.4.2 流类层次124
4.4.3 在流层次中选择正确的层次126
4.5 simpio.h和filelib.h库127
本章小结128
复习题128
习题129
第5章 集合类133
5.1 Vector类134
5.1.1 指定Vector的基类型134
5.1.2 声明Vector对象135
5.1.3 Vector的操作135
5.1.4 从Vector对象中选择元素136
5.1.5 作为参数传递Vector对象137
5.1.6 创建预先定义大小的Vector138
5.1.7 Vector类的构造函数141
5.1.8 Vector中的操作符142
5.1.9 表示二维结构143
5.1.10 Stanford类库中的Grid类143
5.2 Stack类144
5.2.1 Stack类结构145
5.2.2 栈和小型计算器145
5.3 Queue类148
5.3.1 仿真和模型149
5.3.2 排队模型149
5.3.3 离散时间150
5.3.4 仿真时间中的事件150
5.3.5 实现仿真151
5.4 Map类154
5.4.1 Map类的结构154
5.4.2 在一个应用中使用Map类156
5.4.3 Map类作为关联数组157
5.5 Set类158
5.5.1 实现<cctype>库159
5.5.2 创建单词列表160
5.5.3 Stanford类库中的Lexicon类161
5.6 在集合上进行迭代162
5.6.1 迭代顺序163
5.6.2 再论儿童黑话164
5.6.3 计算单词的频率165
本章小结167
复习题168
习题168
第6章 类的设计178
6.1 二维点的表示178
6.1.1 将Point定义为结构类型178
6.1.2 将Point定义为类179
6.1.3 接口与实现的分离182
6.2 操作符重载184
6.2.1 重载插入操作符184
6.2.2 判断两个点是否相等186
6.2.3 为Direction类型增加操作符189
6.3 有理数191
6.3.1 定义新类的机制192
6.3.2 采用用户的观点193
6.3.3 确定Rational类的私有实例变量193
6.3.4 为Rational类定义构造函数193
6.3.5 为Rational类定义方法194
6.3.6 实现Rational类196
6.4 token扫描器类的设计198
6.4.1 用户想从记号扫描器中得到什么199
6.4.2 tokenscanner.h接口200
6.4.3 实现TokenScanner类202
6.5 将程序封装成类205
本章小结207
复习题207
习题208
第7章 递归简介215
7.1 一个简单的递归例子215
7.2 阶乘函数217
7.2.1 fact的递归公式217
7.2.2 追踪递归过程218
7.2.3 递归的稳步跳跃221
7.3 斐波那契函数222
7.3.1 计算斐波那契数列项222
7.3.2 在递归实现中获得自信223
7.3.3 递归实现的效率224
7.3.4 递归不应被指责225
7.4 检测回文226
7.5 二分查找算法228
7.6 间接递归229
7.7 递归地思考230
7.7.1 保持全局的观点230
7.7.2 避免常见的错误231
本章小结232
复习题233
习题234
第8章 递归策略237
8.1 汉诺塔237
8.1.1 问题框架238
8.1.2 找到一种递归策略238
8.1.3 验证这个策略240
8.1.4 编码方案241
8.1.5 跟踪递归过程242
8.2 子集求和问题245
8.2.1 寻找一个递归解决方案246
8.2.2 包含/排除模式246
8.3 字符排列247
8.4 图的递归249
8.4.1 一个来自计算机艺术的实例250
8.4.2 分形252
本章小结254
复习题255
习题255
第9章 回溯算法264
9.1 迷宫的递归回溯264
9.1.1 右手法则264
9.1.2 寻找一种递归方法265
9.1.3 确定简单情况266
9.1.4 对迷宫问题的解决算法进行编码267
9.1.5 说服你自己那个方案可行269
9.2 回溯与游戏271
9.2.1 拿子游戏272
9.2.2 一个通用的双人游戏程序276
9.3 最小最大算法277
9.3.1 游戏树278
9.3.2 评价位置和走法278
9.3.3 限制递归搜索的深度280
9.3.4 实现最小最大算法280
本章小结282
复习题282
习题283
第10章 算法分析291
10.1 排序问题291
10.1.1 选择排序算法291
10.1.2 性能的经验评估292
10.1.3 分析选择排序算法的性能293
10.2 时间复杂度294
10.2.1 大O符号295
10.2.2 大O的标准简化295
10.2.3 选择排序算法的时间复杂度295
10.2.4 从代码中降低时间复杂度296
10.2.5 最坏情况以及平均情况下的复杂度297
10.2.6 大O符号的正式定义298
10.3 递归的终止300
10.3.1 分治策略的作用300
10.3.2 合并两个矢量301
10.3.3 归并排序算法301
10.3.4 归并排序的计算复杂度302
10.3.5 比较N2与Nlog2N的性能304
10.4 标准的算法复杂度类别304
10.5 快速排序算法306
10.5.1 划分矢量308
10.5.2 快速排序算法的性能分析310
10.6 数学归纳法311
本章小结313
复习题314
习题315
第11章 指针和数组320
11.1 内存结构320
11.1.1 位、字节和字320
11.1.2 二进制和十六进制表示321
11.1.3 表示其他数据类型322
11.1.4 内存地址323
11.1.5 为变量分配内存325
11.2 指针326
11.2.1 把地址当作数值327
11.2.2 声明指针变量327
11.2.3 基本的指针运算328
11.2.4 指向结构和对象的指针330
11.2.5 关键字this331
11.2.6 特殊的指针NULL331
11.2.7 指针和引用调用332
11.3 数组334
11.3.1 声明数组334
11.3.2 数组元素的选择335
11.3.3 数组的静态初始化335
11.3.4 有效容量和分配容量336
11.3.5 指针和数组的关系336
11.4 指针运算338
11.4.1 数组索引和内存地址338
11.4.2 指针的自增自减运算339
11.4.3 C风格字符串339
11.4.4 指针运算和程序风格341
本章小结341
复习题342
习题344
第12章 动态内存管理347
12.1 动态分配和堆347
12.1.1 new操作符348
12.1.2 动态数组348
12.1.3 动态对象349
12.2 链表349
12.2.1 刚铎灯塔349
12.2.2 链表内的迭代352
12.2.3 递归和列表352
12.3 释放内存352
12.3.1 delete操作符352
12.3.2 释放内存策略353
12.3.3 析构函数354
12.4 定义CharStack类354
12.4.1 charstack.h接口355
12.4.2 选择字符栈的表示357
12.5 堆-栈图361
12.6 单元测试366
12.7 拷贝对象368
12.7.1 深拷贝和浅拷贝368
12.7.2 赋值和拷贝构造函数369
12.8 关键字const的使用371
12.8.1 常量定义371
12.8.2 常量引用调用372
12.8.3 const方法372
12.9 CharStack类的效率376
本章小结377
复习题378
习题379
第13章 效率和表示383
13.1 编辑文本的软件模式383
13.2 设计简单的文本编辑器384
13.2.1 编辑器命令384
13.2.2 EditorBuffer类的公有接口385
13.2.3 选择一种底层表示387
13.2.4 编写编辑器应用代码388
13.3 基于数组的类实现389
13.3.1 定义私有数据结构390
13.3.2 缓冲区操作的实现390
13.3.3 基于数组的编辑器的时间复杂度393
13.4 基于栈的类实现394
13.4.1 定义私有数据结构394
13.4.2 缓冲区操作的实现395
13.4.3 时间复杂度的比较397
13.5 基于列表的类实现397
13.5.1 链表缓冲区的插入操作400
13.5.2 链表缓冲区的删除操作402
13.5.3 链表表示法中光标的移动403
13.5.4 缓冲区实现的完善405
13.5.5 基于链表的缓冲区的时间复杂度407
13.5.6 双向链表408
13.5.7 时空权衡408
本章小结409
复习题409
习题410
第14章 线性结构414
14.1 模板414
14.2 栈的实现416
14.2.1 使用动态数组实现栈416
14.2.2 使用链表实现栈420
14.3 队列的实现426
14.3.1 基于数组的队列实现427
14.3.2 队列的链表表示433
14.4 实现矢量类437
14.5 集成原型和代码442
本章小结442
复习题443
习题444
第15章 映射446
15.1 使用矢量实现映射447
15.2 查找表449
15.3 哈希451
15.3.1 设计数据结构451
15.3.2 为字符串定义哈希函数452
15.3.3 实现哈希表454
15.3.4 跟踪哈希表的实现456
15.3.5 调整桶的数目457
15.4 实现HashMap类458
本章小结459
复习题460
习题461
第16章 树463
16.1 家谱463
16.1.1 用来描述树的术语463
16.1.2 树的递归特性464
16.1.3 用C++语言表示家谱464
16.2 二叉搜索树465
16.2.1 使用二叉搜索树的动机466
16.2.2 在二叉搜索树中寻找节点467
16.2.3 在二叉搜索树中插入一个新节点468
16.2.4 删除节点471
16.2.5 树的遍历472
16.3 平衡树473
16.3.1 平衡树策略474
16.3.2 可视化AVL算法475
16.3.3 单旋转476
16.3.4 双旋转478
16.3.5 实现AVL算法478
16.4 使用BST实现映射482
16.5 偏序数482
本章小结485
复习题485
习题487
第17章 集合494
17.1 集合作为一种数学抽象494
17.1.1 隶属关系494
17.1.2 集合运算495
17.1.3 集合恒等式496
17.2 集合接口的扩展497
17.3 集合的实现策略500
17.4 优化小整数的集合504
17.4.1 特征向量504
17.4.2 压缩的位数组505
17.4.3 位操作符506
17.4.4 实现特征向量507
17.4.5 实现高级集合运算509
17.4.6 模板特化509
17.4.7 使用一种混合的实现509
本章小结510
复习题511
习题512
第18章 图514
18.1 图的结构514
18.1.1 有向图和无向图515
18.1.2 路径和回路516
18.1.3 连通性516
18.2 表示策略517
18.2.1 用邻接表表示连接关系517
18.2.2 用邻接矩阵表示连接关系518
18.2.3 用弧集合表示关系519
18.3 一种低层的图抽象520
18.4 图的遍历524
18.4.1 深度优先搜索524
18.4.2 广度优先搜索527
18.5 定义图类528
18.5.1 用类表示图、节点和弧528
18.5.2 用参数化的类实现图529
18.6 寻找最短路径538
18.7 搜索网页的算法542
18.7.1 谷歌的网页排名算法542
18.7.2 网页排名算法的一个简例543
本章小结544
复习题545
习题546
第19章 继承551
19.1 简单的继承551
19.1.1 指定模板类中的类型551
19.1.2 定义Employee类552
19.1.3 C++中子类的局限性554
19.2 图形对象的继承层次556
19.2.1 调用父类的构造函数561
19.2.2 将GObject类指针存储在矢量中563
19.3 表达式的类层次563
19.3.1 异常处理565
19.3.2 表达式结构566
19.3.3 表达式的递归定义566
19.3.4 二义性567
19.3.5 表达式树568
19.3.6 exp.h接口570
19.3.7 Expression子类的表示573
19.3.8 表达式图解573
19.3.9 方法的实现574
19.4 解析表达式577
19.4.1 语句解析和语法577
19.4.2 考虑运算的优先级578
19.4.3 递归下降语法分析器579
19.5 多重继承584
19.5.1 stream类库中的多重继承584
19.5.2 在GObject继承层次中添加GFillable类585
19.5.3 多重继承的危险性586
本章小结586
复习题587
习题589
第20章 迭代策略595
20.1 使用迭代器595
20.1.1 简单的迭代器例子595
20.1.2 迭代器的层次结构597
20.2 使用函数作为数据值598
20.2.1 函数指针598
20.2.2 简单的画图应用598
20.2.3 声明函数指针600
20.2.4 实现plot函数600
20.2.5 映射函数601
20.2.6 实现映射函数603
20.2.7 回调函数的限制603
20.3 用函数封装数据604
20.3.1 使用对象模拟闭包604
20.3.2 函数对象的简单例子605
20.3.3 向映射函数传递函数对象606
20.3.4 编写以函数作为参数的函数607
20.4 STL算法库607
20.5 C++的函数式编程609
20.5.1 STL库<functional>的接口610
20.5.2 比较函数612
20.6 迭代器的实现612
20.6.1 为矢量类实现迭代器612
20.6.2 将指针作为迭代器616
20.6.3 typedef关键字617
20.6.4 为其他集合类实现迭代器618
本章小结618
复习题619
习题619
索引624