[套装书]Big C++中文版(原书第3版)+C++语言导学(原书第2版)(2册)

作者
[美] 凯·霍斯特曼(Cay Horstmann)[美]本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup)
丛书名
计算机科学丛书
出版社
机械工业出版社
ISBN
9782002122105
简要
简介
内容简介书籍计算机书籍 ---------------------------Big C++中文版(原书第3版)--------------------------- 本书讨论C++和程序设计,重点是其中的核心概念以及高效的学习方法,不要求读者具备编程经验。书中采用传统的讲授方法,首先强调控制结构、过程分解和数组算法,在较为靠前的章节中就适时地引入了对象的概念。从第9章开始,读者将动手设计和实现自定义的类。最后介绍数据结构和算法,涉及高级C++特性。本书语言浅显易懂,并且包含大量习题和编程项目,既适合作为高等院校计算机及相关专业的教材,也适合初学者自学。 ---------------------------C++语言导学(原书第2版)--------------------------- 在《C++导学(第二版)》中,C++的创造者本贾尼·斯特劳斯特鲁普描述了现代C++语言的构成。这本简洁、自成体系的导引书籍包含了大多数主要C++语言特性和主要标准库组件——当然,并未深入介绍,而是给予程序员一个有意义的语言概述、一些关键的例子以及起步阶段的实用帮助。
目录



---------------------------Big C++中文版(原书第3版)---------------------------


出版者的话
译者序
前言
第1章 引言 1
1.1 何谓编程 1
1.2 计算机的组成 2
1.3 机器代码和程序设计语言 4
1.4 熟悉编程环境 5
1.5 分析第一个程序 8
1.6 错误 11
1.7 问题求解:算法设计 12
1.7.1 算法的概念 12
1.7.2 求解投资问题的算法 13
1.7.3 伪代码 14
1.7.4 从算法到程序 14
本章小结 18
复习题 19
练习题 22
编程项目 23
第2章 基本数据类型 25
2.1 变量 25
2.1.1 变量定义 25
2.1.2 数值类型 26
2.1.3 变量名 27
2.1.4 赋值语句 27
2.1.5 常量 29
2.1.6 注释 29
2.2 算术运算 33
2.2.1 算术运算符 33
2.2.2 递增和递减 33
2.2.3 整数除法和余数 33
2.2.4 将浮点数转换为整数 34
2.2.5 幂运算和求根运算 34
2.3 输入和输出 40
2.3.1 输入 40
2.3.2 格式化输出 41
2.4 问题求解:首先通过手工实现 43
2.5 字符串 46
2.5.1 字符串类型 47
2.5.2 连接 47
2.5.3 字符串输入 47
2.5.4 字符串函数 48
本章小结 50
复习题 51
练习题 54
编程项目 56
第3章 分支 64
3.1 if语句 64
3.2 数字和字符串的比较 69
3.3 多路分支 75
3.4 嵌套分支 79
3.5 问题求解:流程图 83
3.6 问题求解:测试用例 85
3.7 布尔变量和运算符 87
3.8 实际应用:输入确认 91
本章小结 94
复习题 95
练习题 99
编程项目 101
第4章 循环 109
4.1 while循环 109
4.2 问题求解:手动跟踪 115
4.3 for循环 118
4.4 do循环 123
4.5 处理输入 124
4.5.1 标记值 124
4.5.2 一直读直至输入失败 126
4.6 问题求解:情节串联图板 129
4.7 常用的循环算法 131
4.7.1 求和及均值 131
4.7.2 统计匹配项 132
4.7.3 找到第一个匹配项 132
4.7.4 一直提示输入直至找到匹配项 132
4.7.5 最大值和最小值 133
4.7.6 比较相邻值 133
4.8 嵌套循环 137
4.9 问题求解:首先解决较简单的问题 140
4.10 随机数与模拟 144
4.10.1 生成随机数 144
4.10.2 模拟掷骰子 145
4.10.3 蒙特卡罗方法 146
本章小结 148
复习题 149
练习题 153
编程项目 156
第5章 函数 167
5.1 将函数看作黑盒 167
5.2 实现函数 168
5.3 参数传递 170
5.4 返回值 172
5.5 无返回值的函数 176
5.6 问题求解:可重用函数 177
5.7 问题求解:逐步细化 178
5.8 变量作用域和全局变量 185
5.9 引用参数 187
5.10 递归函数(可选) 191
本章小结 196
复习题 197
练习题 200
编程项目 203
第6章 数组和向量 225
6.1 数组 225
6.1.1 定义数组 225
6.1.2 访问数组元素 227
6.1.3 部分填充的数组 228
6.2 常见的数组算法 230
6.2.1 填充 230
6.2.2 复制 231
6.2.3 求和及均值 231
6.2.4 最大值和最小值 231
6.2.5 元素分隔符 232
6.2.6 统计匹配项 232
6.2.7 线性搜索 232
6.2.8 移除元素 233
6.2.9 插入元素 233
6.2.10 交换元素 234
6.2.11 读取输入 235
6.3 数组与函数 239
6.4 问题求解:修改算法 242
6.5 问题求解:通过操纵有形的物体发现算法 248
6.6 二维数组 250
6.6.1 定义二维数组 250
6.6.2 访问数组元素 251
6.6.3 定位相邻元素 251
6.6.4 计算行和列的合计 252
6.6.5 二维数组参数 253
6.7 向量 256
6.7.1 定义向量 256
6.7.2 增大和减小向量 257
6.7.3 向量和函数 258
6.7.4 向量算法 259
6.7.5 二维向量 260
本章小结 262
复习题 262
练习题 266
编程项目 269
第7章 指针和结构体 282
7.1 定义和使用指针 282
7.1.1 定义指针 282
7.1.2 通过指针访问变量 283
7.1.3 指针的初始化 285
7.2 数组和指针 287
7.2.1 数组作为指针 287
7.2.2 指针的算术运算 288
7.2.3 数组参数变量就是指针 289
7.3 C和C++字符串 292
7.3.1 字符类型 292
7.3.2 C字符串 292
7.3.3 字符数组 293
7.3.4 C和C++字符串的相互转换 293
7.3.5 C++字符串和运算符[] 294
7.4 动态内存分配 296
7.5 指针数组和指针向量 299
7.6 问题求解:绘制指针-数据关系图 302
7.7 结构体 305
7.7.1 结构体类型 305
7.7.2 结构体的赋值和比较 306
7.7.3 函数和结构体 306
7.7.4 结构体数组 306
7.7.5 具有数组成员的结构体 307
7.7.6 嵌套结构体 307
7.8 指针和结构体 309
7.8.1 指向结构体的指针 309
7.8.2 具有指针成员的结构体 309
本章小结 311
复习题 311
练习题 315
编程项目 317
第8章 流 323
8.1 读写文本文件 323
8.1.1 打开流 323
8.1.2 从文件中读入 324
8.1.3 写入文件 325
8.1.4 文件处理示例 325
8.2 读取文本输入 328
8.2.1 读入单词 328
8.2.2 读取字符 328
8.2.3 读取多行数据 329
8.3 写入文本输出 332
8.4 解析和格式化字符串 334
8.5 命令行参数 336
8.6 随机访问及二进制文件 342
8.6.1 随机访问 343
8.6.2 二进制文件 343
8.6.3 处理图像文件 343
本章小结 347
复习题 348
练习题 348
编程项目 350
第9章 类 358
9.1 面向对象程序设计 358
9.2 实现一个简单的类 359
9.3 指定类的公共接口 361
9.4 设计数据表示 363
9.5 成员函数 365
9.5.1 实现成员函数 365
9.5.2 隐式和显式参数 365
9.5.3 从成员函数调用成员函数 366
9.6 构造函数 369
9.7 问题求解:跟踪对象 374
9.8 问题求解:发现类 380
9.9 单独编译 382
9.10 指向对象的指针 386
9.10.1 动态分配对象 386
9.10.2 ->运算符 387
9.10.3 this指针 387
9.11 问题求解:对象数据的模式 388
9.11.1 保存总数 388
9.11.2 对事件进行计数 389
9.11.3 聚集值 389
9.11.4 管理对象的属性 390
9.11.5 对具有不同状态的对象建模 390
9.11.6 描述对象的位置 391
本章小结 393
复习题 394
练习题 396
编程项目 397
第10章 继承 406
10.1 继承层次结构 406
10.2 实现派生类 410
10.3 重写成员函数 414
10.4 虚函数及多态性 417
10.4.1 切割派生类数据问题 417
10.4.2 指向基类和派生类的指针 418
10.4.3 虚函数 419
10.4.4 多态性 420
本章小结 430
复习题 431
练习题 434
编程项目 434
第11章 递归 443
11.1 三角形数 443
11.2 递归助手函数 450
11.3 递归的效率 451
11.4 排列 455
11.5 相互递归 458
11.6 回溯 461
本章小结 468
复习题 468
练习题 469
编程项目 471
第12章 排序和查找 481
12.1 选择排序 481
12.2 剖析选择排序算法 483
12.3 分析选择排序算法的性能 484
12.4 归并排序 488
12.5 分析归并排序算法 490
12.6 查找 494
12.6.1 线性查找 494
12.6.2 二分查找 495
12.7 问题求解:估计算法的运行时间 498
12.7.1 线性时间 498
12.7.2 平方时间 499
12.7.3 三角形图案 500
12.7.4 对数时间 501
本章小结 503
复习题 504
练习题 507
编程项目 508
第13章 高级C++特性 515
13.1 运算符重载 515
13.1.1 运算符函数 515
13.1.2 重载比较运算符 517
13.1.3 输入和输出 518
13.1.4 运算符成员 518
13.2 自动内存管理 522
13.2.1 分配内存的构造函数 522
13.2.2 析构函数 523
13.2.3 重载赋值运算符 525
13.2.4 拷贝构造函数 528
13.3 模板 536
13.3.1 函数模板 537
13.3.2 类模板 537
本章小结 540
复习题 541
练习题 544
编程项目 546
第14章 链表、栈和队列 564
14.1 使用链表 564
14.2 实现链表 568
14.2.1 链表、节点和迭代器类 569
14.2.2 实现迭代器 570
14.2.3 实现插入和删除 572
14.3 链表、数组及向量操作的效率 580
14.4 栈和队列 583
14.5 实现栈和队列 586
14.5.1 由链表实现栈 586
14.5.2 由数组实现栈 589
14.5.3 由链表实现队列 589
14.5.4 由循环数组实现队列 590
14.6 栈和队列的应用 590
14.6.1 平衡括号 590
14.6.2 逆波兰表达式求值 591
14.6.3 代数表达式求值 593
14.6.4 回溯 596
本章小结 598
复习题 599
练习题 601
编程项目 603
第15章 集合、映射和哈希表 617
15.1 集合 617
15.2 映射 619
15.3 实现哈希表 624
15.3.1 哈希码 624
15.3.2 哈希表 625
15.3.3 查找元素 625
15.3.4 添加和移除元素 626
15.3.5 遍历哈希表 626
本章小结 635
复习题 635
练习题 636
编程项目 637
第16章 树结构 641
16.1 树的基本概念 641
16.2 二叉树 644
16.2.1 二叉树示例 644
16.2.2 平衡树 646
16.2.3 二叉树的实现 647
16.3 二叉查找树 648
16.3.1 二分查找的属性 648
16.3.2 插入操作 649
16.3.3 移除操作 651
16.3.4 操作的效率 652
16.4 树遍历 657
16.4.1 中序遍历 657
16.4.2 前序遍历和后序遍历 658
16.4.3 访问者模式 659
16.4.4 深度优先搜索和广度优先搜索 660
16.4.5 树迭代器 661
16.5 红黑树 662
16.5.1 红黑树的基本性质 662
16.5.2 插入操作 664
16.5.3 移除操作 665
本章小结 668
复习题 669
练习题 670
编程项目 671
第17章 优先级队列和堆 711
17.1 优先级队列 711
17.2 堆 713
17.3 堆排序算法 722
本章小结 726
复习题 727
练习题 727
编程项目 728
在线资源一
附录A 保留字小结
附录B 运算符小结
附录C 字符编码
附录D C++库小结
附录E C++语言编程风格指南
附录F 数字系统
术语表



---------------------------C++语言导学(原书第2版)---------------------------


出版者的话
译者序
前言
第1章 基础知识 1
1.1 引言 1
1.2 程序 1
1.3 函数 3
1.4 类型、变量和算术运算 4
1.4.1 算术运算 5
1.4.2 初始化 6
1.5 作用域和生命周期 7
1.6 常量 8
1.7 指针、数组和引用 9
1.8 检验 12
1.9 映射到硬件 14
1.9.1 赋值 14
1.9.2 初始化 15
1.10 建议 16
第2章 用户自定义类型 18
2.1 引言 18
2.2 结构 18
2.3 类 20
2.4 联合 21
2.5 枚举 22
2.6 建议 23
第3章 模块化 25
3.1 引言 25
3.2 分别编译 26
3.3 模块(C++20) 27
3.4 名字空间 29
3.5 错误处理 30
3.5.1 异常 30
3.5.2 不变式 32
3.5.3 错误处理替代 33
3.5.4 合约 35
3.5.5 静态断言 35
3.6 函数参数和返回值 36
3.6.1 参数传递 36
3.6.2 返回值 37
3.6.3 结构化绑定 39
3.7 建议 40
第4章 类 41
4.1 引言 41
4.2 具体类型 42
4.2.1 一种算术类型 42
4.2.2 容器 44
4.2.3 初始化容器 45
4.3 抽象类型 47
4.4 虚函数 49
4.5 类层次 50
4.5.1 层次结构的益处 52
4.5.2 层次漫游 53
4.5.3 避免资源泄漏 54
4.6 建议 55
第5章 基本操作 57
5.1 引言 57
5.1.1 基本操作 57
5.1.2 类型转换 59
5.1.3 成员初始值 59
5.2 拷贝和移动 60
5.2.1 拷贝容器 60
5.2.2 移动容器 62
5.3 资源管理 63
5.4 常规操作 65
5.4.1 比较 65
5.4.2 容器操作 65
5.4.3 输入输出操作 66
5.4.4 用户自定义字面值 66
5.4.5 swap() 67
5.4.6 hash 67
5.5 建议 67
第6章 模板 69
6.1 引言 69
6.2 参数化类型 69
6.2.1 约束模板参数(C++20) 71
6.2.2 值模板参数 71
6.2.3 模板参数推断 72
6.3 参数化操作 73
6.3.1 函数模板 73
6.3.2 函数对象 74
6.3.3 lambda表达式 75
6.4 模板机制 77
6.4.1 可变参数模板 78
6.4.2 别名 78
6.4.3 编译时if 79
6.5 建议 80
第7章 概念和泛型编程 81
7.1 引言 81
7.2 概念(C++20) 81
7.2.1 概念的使用 82
7.2.2 基于概念的重载 83
7.2.3 合法代码 84
7.2.4 概念的定义 84
7.3 泛型编程 86
7.3.1 概念的使用 86
7.3.2 使用模板抽象 86
7.4 可变参数模板 88
7.4.1 表达式折叠 89
7.4.2 参数转发 90
7.5 模板编译模型 90
7.6 建议 91
第8章 标准库概览 92
8.1 引言 92
8.2 标准库组件 92
8.3 标准库头文件和名字空间 93
8.4 建议 94
第9章 字符串和正则表达式 95
9.1 引言 95
9.2 字符串 95
9.3 字符串视图 97
9.4 正则表达式 99
9.4.1 搜索 99
9.4.2 正则表达式符号表示 100
9.4.3 迭代器 104
9.5 建议 104
第10章 输入输出 106
10.1 引言 106
10.2 输出 107
10.3 输入 108
10.4 I/O状态 109
10.5 用户自定义类型的I/O 110
10.6 格式化 111
10.7 文件流 112
10.8 字符串流 112
10.9 C风格I/O 113
10.10 文件系统 114
10.11 建议 117
第11章 容器 119
11.1 引言 119
11.2 vector 119
11.2.1 元素 121
11.2.2 范围检查 122
11.3 list 123
11.4 map 125
11.5 unordered_map 125
11.6 容器概述 127
11.7 建议 128
第12章 算法 130
12.1 引言 130
12.2 使用迭代器 131
12.3 迭代器类型 133
12.4 流迭代器 134
12.5 谓词 136
12.6 算法概述 136
12.7 概念(C++20) 137
12.8 容器算法 140
12.9 并行算法 140
12.10 建议 141
第13章 实用功能 142
13.1 引言 142
13.2 资源管理 142
13.2.1 unique_ptr和shared_ptr 143
13.2.2 move()和forward() 145
13.3 范围检查:span 147
13.4 特殊容器 148
13.4.1 array 149
13.4.2 bitset 150
13.4.3 pair和tuple 151
13.5 选择 152
13.5.1 variant 153
13.5.2 optional 154
13.5.3 any 155
13.6 分配器 155
13.7 时间 156
13.8 函数适配器 157
13.8.1 lambda作为适配器 157
13.8.2 mem_fn() 157
13.8.3 function 158
13.9 类型函数 158
13.9.1 iterator_traits 159
13.9.2 类型谓词 161
13.9.3 enable_if 161
13.10 建议 162
第14章 数值 163
14.1 引言 163
14.2 数学函数 163
14.3 数值算法 164
14.4 复数 165
14.5 随机数 166
14.6 向量算术 167
14.7 数值限制 168
14.8 建议 168
第15章 并发 169
15.1 引言 169
15.2 任务和thread 169
15.3 传递参数 170
15.4 返回结果 171
15.5 共享数据 172
15.6 等待事件 173
15.7 任务通信 175
15.7.1 future和promise 175
15.7.2 packaged_task 176
15.7.3 async() 177
15.8 建议 178
第16章 历史和兼容性 180
16.1 历史 180
16.1.1 大事年表 181
16.1.2 早期的C++ 182
16.1.3 ISO C++标准 184
16.1.4 标准和编程风格 186
16.1.5 C++的应用 186
16.2 C++特性演化 186
16.2.1 C++11语言特性 187
16.2.2 C++14语言特性 188
16.2.3 C++17语言特性 188
16.2.4 C++11标准库组件 188
16.2.5 C++14标准库组件 189
16.2.6 C++17标准库组件 189
16.2.7 已弃用特性 190
16.3 C/C++兼容性 190
16.3.1 C和C++是兄弟 191
16.3.2 兼容性问题 192
16.4 参考文献 193
16.5 建议 196
索引 198



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4