
Introduction to programming with C++
副标题:无
作 者:(美)Y. Daniel Liang著;王刚,刘晓光,刘璟译
分类号:
ISBN:9787111240174
微信扫一扫,移动浏览光盘
简介
本书采用“基础先行的方法”,首先逐步介绍基础的程序设计概念,然后讲授面向对象程序设计方法,最后介绍如何利用面向对象方法构建具有错误处理、输入输出和复杂数据结构的有趣的应用程序。本书分为三部分:第一部分介绍基础程序设计方法,包括基本数据类型和运算、分支语句、循环、函数、数组、指针和c字符串以及递归等内容;第二部分介绍面向对象程序设计方法,主要包括对象和类的基本概念、对象和类的深入内容、继承和多态、文件输入和输出、运算符重载及异常处理等内容;第三部分介绍了数据结构方法的基础知识,包括模板、链表、栈、队列、树、堆、优先队列、算法效率、排序算法、stl容器、stl算法等内容。.
本书可以作为计算机及相关专业的程序设计基础课程的教材,也可以作为c++语言程序设计的自学或函授学习的参考书。
本书保持了liang博士系列丛书中一贯的标志性的教与学的哲学:以实例教,由实践学。通过使用他所提出的已经经过实践检验的“基础先行”的方法,liang博士在本书中通过大量实例阐明了基本的c++特性,使得学生可以通过实践来更有效地进行学习。
在引入面向对象程序设计思想之前,liang博士使用清晰简明的语言介绍了c++语言的基础知识和基本的程序设计技术,如循环、逐步求精等。这些概念都是使用简短且吸引人的实例来进行阐明的。他还在实例研究中给出了一些较大规模的实例,并附以整体的分析讨论和详细的逐行注解。..
本书首先帮助学生循序渐进地学习所有必需和重要的基本概念,然后再进入到面向对象程序设计方法的学习,最终掌握构建具有异常处理和输入输出功能的有意义的应用程序的方法。贯穿全书的实例和练习都以问题求解为中心,力图培养学生开发可重用组件并用之创建实际项目的意识。
本书特点
大量的表格和图示。
较早地介绍编写程序的方法——从第2章开始,学生就能编写简短、有趣的游戏程序。
使用uml描述类。
大量的补充资料——安装和配置c++开发环境、ide简明教程、补充的c++特性等,这些补充资料便于教师设计自己的课程内容。...
目录
译者序.
前言
第一部分 程序设计基础
第1章 计算机、程序和c++语言简介 2
1.1 引言 2
1.2 什么是计算机 2
1.2.1 cpu 3
1.2.2 内存 3
1.2.3 外存储设备 3
1.2.4 输入输出设备 4
1.2.5 通信设备 5
1.3 程序 5
1.4 操作系统 6
1.4.1 控制和监视系统活动 6
1.4.2 分配和指派系统资源 6
1.4.3 任务调度 7
*1.5 数制 7
1.5.1 二进制数与十进制数之间的转换 7
1.5.2 十六进制数与十进制数之间的转换 8
1.5.3 二进制数与十六进制数之间的转换 9
.1.6 c++语言的历史 9
1.7 一个简单的c++程序 10
1.8 c++程序开发周期 11
*1.9 使用visual c++开发c++程序 12
1.9.1 起步 12
1.9.2 创建项目 13
1.9.3 创建c++程序 14
1.9.4 编译c++程序 16
1.9.5 运行c++程序 16
*1.10 使用dev-c++开发c++程序 17
1.10.1 起步 17
1.10.2 创建程序 17
1.10.3 编译c++程序 18
1.10.4 运行c++程序 19
*1.11 用windows命令行方式开发c++程序 20
*1.12 在unix平台上开发c++程序 21
小结 21
习题 22
程序设计练习 22
第2章 基本数据类型和运算 23
2.1 引言 23
2.2 编写简单的程序 23
2.3 从键盘读取输入 25
2.4 省略std::前缀 26
2.5 标识符 27
2.6 变量 27
2.7 赋值语句和赋值表达式 28
2.8 命名常量 29
2.9 数值数据类型及其运算 30
2.9.1 数值文字常量 31
2.9.2 数值运算符 32
2.9.3 算术表达式 33
2.9.4 简写运算符 34
2.10 数值类型转换 35
2.11 字符数据类型及其运算 37
2.11.1 转义序列表示特殊符号 37
2.11.2 char型和数值型之间的转换 38
2.12 实例研究 38
2.12.1 实例:计算贷款偿还金额 38
2.12.2 实例:计算给定金额的货币数量 40
2.12.3 实例:显示当前时间 42
2.13 程序设计风格和文档 43
2.13.1 适当的注释和注释风格 43
2.13.2 变量和常量的命名 43
2.13.3 恰当的缩进和空白 43
2.14 程序设计错误 43
2.14.1 语法错误 44
2.14.2 运行时错误 44
2.14.3 逻辑错误 44
2.15 调试 45
小结 45
习题 46
程序设计练习 48
第3章 分支语句 50
3.1 引言 50
3.2 bool类型 50
3.3 if语句 51
3.4 实例:猜生日 53
3.5 逻辑运算符 55
3.6 if . . . else语句 57
3.7 嵌套的if语句 58
3.8 实例:计算税款 60
3.9 实例:一个数学学习工具 62
3.10 switch语句 63
3.11 条件表达式 65
3.12 输出格式控制 65
3.13 运算符优先级和结合律 68
3.14 枚举类型 69
小结 71
习题 71
程序设计练习 75
第4章 循环 77
4.1 引言 77
4.2 while循环 77
4.2.1 实例:一个改进的数学学习工具 78
4.2.2 使用用户确认控制循环 80
4.2.3 使用哨兵值控制循环 80
4.3 do-while循环 81
4.4 for循环 82
4.5 使用哪种循环 84
4.6 嵌套的循环 85
4.7 实例研究 86
4.7.1 实例:求最大公约数 86
4.7.2 实例:计算销售额 87
4.7.3 实例:显示数字金字塔 89
*4.8 关键字break和continue 91
4.9 实例:输出素数 92
*4.10 简单文件输入输出 94
4.10.1 向一个文件写入数据 94
4.10.2 从一个文件读取数据 95
4.10.3 检测文件尾 96
小结 97
习题 97
程序设计练习 100
第5章 函数 105
5.1 引言 105
5.2 函数创建 105
5.3 函数调用 106
5.4 无返回值函数 108
5.5 按值方式传递参数 109
5.6 按引用方式传递参数 111
5.7 函数重载 113
5.8 函数原型 115
5.9 默认参数 116
5.10 实例研究:使用函数计算税款 117
5.11 在不同程序中重用函数 118
5.12 实例研究:生成随机字符 119
5.13 变量的作用域 121
5.13.1 for循环中变量的作用域 123
5.13.2 静态局部变量 123
5.14 数学函数 124
5.15 函数抽象和逐步求精 125
5.15.1 自顶向下设计 125
5.15.2 自顶向下或自底向上实现.. 127
5.15.3 实现细节 128
*5.16 内联函数 131
小结 132
习题 133
程序设计练习 136
第6章 数组 141
6.1 引言 141
6.2 数组基础 141
6.2.1 声明数组 141
6.2.2 数组下标变量 142
6.2.3 数组初始化语句 143
6.2.4 初始化字符数组 143
6.2.5 处理数组 144
6.2.6 实例:测试数组 145
6.2.7 实例:评定成绩等级 146
6.3 数组作为函数参数 147
6.4 数组作为函数返回值 149
6.5 搜索 151
6.5.1 顺序搜索方法 151
6.5.2 二分搜索方法 151
6.6 排序数组 153
6.6.1 选择排序 153
*6.6.2 插入排序 155
6.7 二维数组 156
6.7.1 声明二维数组 156
6.7.2 处理二维数组 157
6.7.3 二维数组作为函数参数 158
6.7.4 实例:评定多项选择测试的成绩 159
*6.7.5 实例:计算纳税额 160
*6.8 多维数组 162
6.8.1 实例:计算学生成绩 162
6.8.2 实例:猜生日 163
小结 164
习题 165
程序设计练习 166
第7章 指针和c字符串 171
7.1 引言 171
7.2 指针基础 171
7.3 用指针实现实参的引用传递 174
7.4 数组和指针 174
7.5 常量指针 176
7.6 指针作为函数返回值 177
7.7 动态内存分配 178
7.8 实例研究:统计每个字母的出现次数 180
7.9 字符和字符串 182
7.9.1 字符串函数 183
7.9.2 字符串存储和访问 184
7.9.3 读取字符串 185
7.9.4 c字符串函数 185
7.9.5 实例:获取子串 189
7.10 实例研究:检查回文串 189
小结 191
习题 191
程序设计练习 193
第8章 递归 196
8.1 引言 196
8.2 实例:阶乘 196
8.3 实例:斐波那契数列 198
8.4 用递归方法求解问题 200
8.5 递归辅助函数 201
8.5.1 选择排序 202
8.5.2 二分搜索 203
8.6 汉诺塔 204
8.7 递归与迭代 207
小结 207
习题 207
程序设计练习 209
第二部分 面向对象程序设计
第9章 对象和类 212
9.1 引言 212
9.2 声明类 212
9.3 构造函数 214
9.4 对象名 214
9.5 声明和实现分离 217
9.6 通过指针访问对象成员 219
9.7 在堆中创建动态对象 220
9.8 c++字符串类 220
9.8.1 构造一个字符串 220
9.8.2 追加字符串 221
9.8.3 字符串赋值 222
9.8.4 函数at、clear、erase和empty 222
9.8.5 函数length、size和capacity 222
9.8.6 字符串比较 222
9.8.7 获得子串 223
9.8.8 字符串搜索 223
9.8.9 字符串插入和替换 223
9.8.10 字符串运算符 223
9.9 数据域封装 224
9.10 变量作用域 226
9.11 this指针 227
9.12 对象作为函数参数 228
9.13 对象数组 230
9.14 类抽象和封装 232
9.15 实例研究:loan类 232
9.16 构造函数初始化列表 235
小结 237
习题 238
程序设计练习 240
第10章 对象和类的更多内容 243
10.1 引言 243
10.2 不可变对象和不可变类 243
10.3 避免重复声明 245
10.4 实例成员和静态成员 246
10.5 析构函数 250
10.6 拷贝构造函数 252
10.7 自定义拷贝构造函数 254
10.8 友元函数和友元类 256
10.9 对象合成 257
10.10 实例研究:course类 259
10.11 实例研究:stackofintegers类 261
10.12 c++向量类 263
小结 265
习题 265
程序设计练习 268
第11章 继承和多态 269
11.1 引言 269
11.2 基类和派生类 269
11.3 泛型程序设计 275
11.4 构造函数和析构函数 275
11.4.1 调用基类构造函数 275
11.4.2 构造函数链和析构函数链 276
11.5 函数重定义 277
11.6 多态和虚函数 278
11.7 关键字protected 280
11.8 抽象类和纯虚函数 281
11.9 动态类型转换 285
小结 286
习题 287
程序设计练习 291
第12章 文件输入输出 293
12.1 引言 293
12.2 文本输入输出 293
12.2.1 向文件中写入数据 293
12.2.2 从文件中读取数据 294
12.2.3 检测文件是否存在 295
12.2.4 检测文件末尾 296
12.3 格式化输出 297
12.4 成员函数:getline、get和put 297
12.5 fstream和文件打开模式 300
12.6 检测流状态 301
12.7 二进制输入输出 303
12.7.1 write函数 303
12.7.2 read函数 304
12.7.3 实例:二进制数组i/o 305
12.7.4 实例:二进制对象i/o 306
12.8 随机访问文件 309
12.9 更新文件 311
小结 312
习题 313
程序设计练习 313
第13章 运算符重载 315
13.1 引言 315
13.2 rational类 315
13.3 运算符函数 320
13.4 简写运算符重载 321
13.5 [ ]运算符重载 322
13.6 一元运算符重载 323
13.7 ++和--运算符重载 323
13.8 [[和]]运算符重载 324
13.9 对象类型转换 325
13.10 新的rational类 326
13.11 重载赋值运算符 332
小结 333
习题 333
程序设计练习 334
第14章 异常处理 335
14.1 引言 335
14.2 异常处理概述 335
14.3 异常处理机制的优点 337
14.4 异常类 338
14.5 自定义异常类 341
14.6 多重异常捕获 344
14.7 异常的传播 347
14.8 重抛出异常 349
14.9 异常规约 350
14.10 何时使用异常机制 350
小结 351
习题 351
程序设计练习 353
第三部分 数 据 结 构
第15章 模板 356
15.1 引言 356
15.2 模板基础 356
15.3 实例:一个通用排序函数 358
15.4 模板类 359
15.5 改进stack类 364
小结 365
习题 366
程序设计练习 368
第16章 链表、栈和队列 369
16.1 引言 369
16.2 节点 369
16.3 链表类 371
16.4 实现linkedlist 373
16.4.1 实现addfirst(t element) 373
16.4.2 实现addlast(t element) 373
16.4.3 实现add(int index, t element) 374
16.4.4 实现removefirst() 375
16.4.5 实现removelast() 375
16.4.6 实现removeat(int index) 377
16.5 链表的变形 382
16.6 使用链表类实现栈类 382
16.7 队列 383
*16.8 迭代器 385
小结 388
习题 388
程序设计练习 390
第17章 树、堆和优先队列 392
17.1 引言 392
17.2 二叉树 392
17.2.1 描述二叉树 392
17.2.2 访问二叉树中的节点 393
17.2.3 向二叉搜索树中插入数据元素 393
17.2.4 树的遍历 394
17.2.5 二叉树类 394
17.3 堆 399
17.3.1 堆的描述 399
17.3.2 堆的删除操作 399
17.3.3 堆的插入操作 400
17.3.4 heap类 400
17.4 优先队列 403
小结 405
习题 406
程序设计练习 406
第18章 算法效率和排序 408
18.1 引言 408
18.2 评价算法效率 408
18.2.1 大o符号 409
18.2.2 实例:复杂性计算 409
18.2.3 分析二分搜索算法 411
18.2.4 分析选择排序算法 411
18.2.5 分析插入排序算法 412
18.2.6 分析汉诺塔算法 412
18.2.7 常见增长函数比较 412
18.3 起泡排序 413
18.4 归并排序 415
18.5 快速排序 418
18.6 堆排序 421
18.7 外排序 422
18.7.1 实现阶段i 423
18.7.2 实现阶段ii 424
18.7.3 合并两个阶段 426
18.7.4 外排序分析 429
小结 429
习题 430
程序设计练习 431
第19章 stl容器 433
19.1 引言 433
19.2 stl基础 433
19.3 stl迭代器 437
19.3.1 迭代器类型 439
19.3.2 迭代器运算符 439
19.3.3 预定义的迭代器 441
19.3.4 istream_iterator和ostream_iterator 442
19.4 顺序容器 443
19.4.1 顺序容器:vector 443
19.4.2 顺序容器:deque 445
19.4.3 顺序容器:list 446
19.5 关联容器 449
19.5.1 关联容器:set和multiset 449
19.5.2 关联容器:map和multimap 451
19.6 容器适配器 452
19.6.1 容器适配器:stack 452
19.6.2 容器适配器:queue 453
19.7 容器适配器:priority_queue 454
小结 454
习题 455
程序设计练习 457
第20章 stl算法 459
20.1 引言 459
20.2 算法类型 459
20.3 copy 461
20.4 fill和fill_n 462
20.5 generate和generate_n 463
20.6 remove、remove_if、remove_copy和remove_copy_if 464
20.7 replace、replace_if、replace_copy和replace_copy_if 466
20.8 find、find_if、find_end和find_first_of 468
20.9 search和search_n 472
20.10 sort和binary_search 473
20.11 adjacent_find、merge和inplace_merge 475
20.12 reverse和reverse_copy 476
20.13 rotate和rotate_copy 477
20.14 swap、iter_swap和swap_ranges 478
20.15 count和count_if 479
20.16 max_element和min_element 479
20.17 random_shuffle 480
20.18 for_each和transform 481
20.19 includes、set_union、set_difference、set_intersection和set_symmetric_difference 481
20.20 accumulate、adjacent_difference、inner_product和partial_sum 484
小结 486
习题 487
程序设计练习 489
附录 491
附录a c++关键字 492
附录b ascii字符集 493
附录c 运算符优先级表 494
附录d 位运算... 495
前言
第一部分 程序设计基础
第1章 计算机、程序和c++语言简介 2
1.1 引言 2
1.2 什么是计算机 2
1.2.1 cpu 3
1.2.2 内存 3
1.2.3 外存储设备 3
1.2.4 输入输出设备 4
1.2.5 通信设备 5
1.3 程序 5
1.4 操作系统 6
1.4.1 控制和监视系统活动 6
1.4.2 分配和指派系统资源 6
1.4.3 任务调度 7
*1.5 数制 7
1.5.1 二进制数与十进制数之间的转换 7
1.5.2 十六进制数与十进制数之间的转换 8
1.5.3 二进制数与十六进制数之间的转换 9
.1.6 c++语言的历史 9
1.7 一个简单的c++程序 10
1.8 c++程序开发周期 11
*1.9 使用visual c++开发c++程序 12
1.9.1 起步 12
1.9.2 创建项目 13
1.9.3 创建c++程序 14
1.9.4 编译c++程序 16
1.9.5 运行c++程序 16
*1.10 使用dev-c++开发c++程序 17
1.10.1 起步 17
1.10.2 创建程序 17
1.10.3 编译c++程序 18
1.10.4 运行c++程序 19
*1.11 用windows命令行方式开发c++程序 20
*1.12 在unix平台上开发c++程序 21
小结 21
习题 22
程序设计练习 22
第2章 基本数据类型和运算 23
2.1 引言 23
2.2 编写简单的程序 23
2.3 从键盘读取输入 25
2.4 省略std::前缀 26
2.5 标识符 27
2.6 变量 27
2.7 赋值语句和赋值表达式 28
2.8 命名常量 29
2.9 数值数据类型及其运算 30
2.9.1 数值文字常量 31
2.9.2 数值运算符 32
2.9.3 算术表达式 33
2.9.4 简写运算符 34
2.10 数值类型转换 35
2.11 字符数据类型及其运算 37
2.11.1 转义序列表示特殊符号 37
2.11.2 char型和数值型之间的转换 38
2.12 实例研究 38
2.12.1 实例:计算贷款偿还金额 38
2.12.2 实例:计算给定金额的货币数量 40
2.12.3 实例:显示当前时间 42
2.13 程序设计风格和文档 43
2.13.1 适当的注释和注释风格 43
2.13.2 变量和常量的命名 43
2.13.3 恰当的缩进和空白 43
2.14 程序设计错误 43
2.14.1 语法错误 44
2.14.2 运行时错误 44
2.14.3 逻辑错误 44
2.15 调试 45
小结 45
习题 46
程序设计练习 48
第3章 分支语句 50
3.1 引言 50
3.2 bool类型 50
3.3 if语句 51
3.4 实例:猜生日 53
3.5 逻辑运算符 55
3.6 if . . . else语句 57
3.7 嵌套的if语句 58
3.8 实例:计算税款 60
3.9 实例:一个数学学习工具 62
3.10 switch语句 63
3.11 条件表达式 65
3.12 输出格式控制 65
3.13 运算符优先级和结合律 68
3.14 枚举类型 69
小结 71
习题 71
程序设计练习 75
第4章 循环 77
4.1 引言 77
4.2 while循环 77
4.2.1 实例:一个改进的数学学习工具 78
4.2.2 使用用户确认控制循环 80
4.2.3 使用哨兵值控制循环 80
4.3 do-while循环 81
4.4 for循环 82
4.5 使用哪种循环 84
4.6 嵌套的循环 85
4.7 实例研究 86
4.7.1 实例:求最大公约数 86
4.7.2 实例:计算销售额 87
4.7.3 实例:显示数字金字塔 89
*4.8 关键字break和continue 91
4.9 实例:输出素数 92
*4.10 简单文件输入输出 94
4.10.1 向一个文件写入数据 94
4.10.2 从一个文件读取数据 95
4.10.3 检测文件尾 96
小结 97
习题 97
程序设计练习 100
第5章 函数 105
5.1 引言 105
5.2 函数创建 105
5.3 函数调用 106
5.4 无返回值函数 108
5.5 按值方式传递参数 109
5.6 按引用方式传递参数 111
5.7 函数重载 113
5.8 函数原型 115
5.9 默认参数 116
5.10 实例研究:使用函数计算税款 117
5.11 在不同程序中重用函数 118
5.12 实例研究:生成随机字符 119
5.13 变量的作用域 121
5.13.1 for循环中变量的作用域 123
5.13.2 静态局部变量 123
5.14 数学函数 124
5.15 函数抽象和逐步求精 125
5.15.1 自顶向下设计 125
5.15.2 自顶向下或自底向上实现.. 127
5.15.3 实现细节 128
*5.16 内联函数 131
小结 132
习题 133
程序设计练习 136
第6章 数组 141
6.1 引言 141
6.2 数组基础 141
6.2.1 声明数组 141
6.2.2 数组下标变量 142
6.2.3 数组初始化语句 143
6.2.4 初始化字符数组 143
6.2.5 处理数组 144
6.2.6 实例:测试数组 145
6.2.7 实例:评定成绩等级 146
6.3 数组作为函数参数 147
6.4 数组作为函数返回值 149
6.5 搜索 151
6.5.1 顺序搜索方法 151
6.5.2 二分搜索方法 151
6.6 排序数组 153
6.6.1 选择排序 153
*6.6.2 插入排序 155
6.7 二维数组 156
6.7.1 声明二维数组 156
6.7.2 处理二维数组 157
6.7.3 二维数组作为函数参数 158
6.7.4 实例:评定多项选择测试的成绩 159
*6.7.5 实例:计算纳税额 160
*6.8 多维数组 162
6.8.1 实例:计算学生成绩 162
6.8.2 实例:猜生日 163
小结 164
习题 165
程序设计练习 166
第7章 指针和c字符串 171
7.1 引言 171
7.2 指针基础 171
7.3 用指针实现实参的引用传递 174
7.4 数组和指针 174
7.5 常量指针 176
7.6 指针作为函数返回值 177
7.7 动态内存分配 178
7.8 实例研究:统计每个字母的出现次数 180
7.9 字符和字符串 182
7.9.1 字符串函数 183
7.9.2 字符串存储和访问 184
7.9.3 读取字符串 185
7.9.4 c字符串函数 185
7.9.5 实例:获取子串 189
7.10 实例研究:检查回文串 189
小结 191
习题 191
程序设计练习 193
第8章 递归 196
8.1 引言 196
8.2 实例:阶乘 196
8.3 实例:斐波那契数列 198
8.4 用递归方法求解问题 200
8.5 递归辅助函数 201
8.5.1 选择排序 202
8.5.2 二分搜索 203
8.6 汉诺塔 204
8.7 递归与迭代 207
小结 207
习题 207
程序设计练习 209
第二部分 面向对象程序设计
第9章 对象和类 212
9.1 引言 212
9.2 声明类 212
9.3 构造函数 214
9.4 对象名 214
9.5 声明和实现分离 217
9.6 通过指针访问对象成员 219
9.7 在堆中创建动态对象 220
9.8 c++字符串类 220
9.8.1 构造一个字符串 220
9.8.2 追加字符串 221
9.8.3 字符串赋值 222
9.8.4 函数at、clear、erase和empty 222
9.8.5 函数length、size和capacity 222
9.8.6 字符串比较 222
9.8.7 获得子串 223
9.8.8 字符串搜索 223
9.8.9 字符串插入和替换 223
9.8.10 字符串运算符 223
9.9 数据域封装 224
9.10 变量作用域 226
9.11 this指针 227
9.12 对象作为函数参数 228
9.13 对象数组 230
9.14 类抽象和封装 232
9.15 实例研究:loan类 232
9.16 构造函数初始化列表 235
小结 237
习题 238
程序设计练习 240
第10章 对象和类的更多内容 243
10.1 引言 243
10.2 不可变对象和不可变类 243
10.3 避免重复声明 245
10.4 实例成员和静态成员 246
10.5 析构函数 250
10.6 拷贝构造函数 252
10.7 自定义拷贝构造函数 254
10.8 友元函数和友元类 256
10.9 对象合成 257
10.10 实例研究:course类 259
10.11 实例研究:stackofintegers类 261
10.12 c++向量类 263
小结 265
习题 265
程序设计练习 268
第11章 继承和多态 269
11.1 引言 269
11.2 基类和派生类 269
11.3 泛型程序设计 275
11.4 构造函数和析构函数 275
11.4.1 调用基类构造函数 275
11.4.2 构造函数链和析构函数链 276
11.5 函数重定义 277
11.6 多态和虚函数 278
11.7 关键字protected 280
11.8 抽象类和纯虚函数 281
11.9 动态类型转换 285
小结 286
习题 287
程序设计练习 291
第12章 文件输入输出 293
12.1 引言 293
12.2 文本输入输出 293
12.2.1 向文件中写入数据 293
12.2.2 从文件中读取数据 294
12.2.3 检测文件是否存在 295
12.2.4 检测文件末尾 296
12.3 格式化输出 297
12.4 成员函数:getline、get和put 297
12.5 fstream和文件打开模式 300
12.6 检测流状态 301
12.7 二进制输入输出 303
12.7.1 write函数 303
12.7.2 read函数 304
12.7.3 实例:二进制数组i/o 305
12.7.4 实例:二进制对象i/o 306
12.8 随机访问文件 309
12.9 更新文件 311
小结 312
习题 313
程序设计练习 313
第13章 运算符重载 315
13.1 引言 315
13.2 rational类 315
13.3 运算符函数 320
13.4 简写运算符重载 321
13.5 [ ]运算符重载 322
13.6 一元运算符重载 323
13.7 ++和--运算符重载 323
13.8 [[和]]运算符重载 324
13.9 对象类型转换 325
13.10 新的rational类 326
13.11 重载赋值运算符 332
小结 333
习题 333
程序设计练习 334
第14章 异常处理 335
14.1 引言 335
14.2 异常处理概述 335
14.3 异常处理机制的优点 337
14.4 异常类 338
14.5 自定义异常类 341
14.6 多重异常捕获 344
14.7 异常的传播 347
14.8 重抛出异常 349
14.9 异常规约 350
14.10 何时使用异常机制 350
小结 351
习题 351
程序设计练习 353
第三部分 数 据 结 构
第15章 模板 356
15.1 引言 356
15.2 模板基础 356
15.3 实例:一个通用排序函数 358
15.4 模板类 359
15.5 改进stack类 364
小结 365
习题 366
程序设计练习 368
第16章 链表、栈和队列 369
16.1 引言 369
16.2 节点 369
16.3 链表类 371
16.4 实现linkedlist 373
16.4.1 实现addfirst(t element) 373
16.4.2 实现addlast(t element) 373
16.4.3 实现add(int index, t element) 374
16.4.4 实现removefirst() 375
16.4.5 实现removelast() 375
16.4.6 实现removeat(int index) 377
16.5 链表的变形 382
16.6 使用链表类实现栈类 382
16.7 队列 383
*16.8 迭代器 385
小结 388
习题 388
程序设计练习 390
第17章 树、堆和优先队列 392
17.1 引言 392
17.2 二叉树 392
17.2.1 描述二叉树 392
17.2.2 访问二叉树中的节点 393
17.2.3 向二叉搜索树中插入数据元素 393
17.2.4 树的遍历 394
17.2.5 二叉树类 394
17.3 堆 399
17.3.1 堆的描述 399
17.3.2 堆的删除操作 399
17.3.3 堆的插入操作 400
17.3.4 heap类 400
17.4 优先队列 403
小结 405
习题 406
程序设计练习 406
第18章 算法效率和排序 408
18.1 引言 408
18.2 评价算法效率 408
18.2.1 大o符号 409
18.2.2 实例:复杂性计算 409
18.2.3 分析二分搜索算法 411
18.2.4 分析选择排序算法 411
18.2.5 分析插入排序算法 412
18.2.6 分析汉诺塔算法 412
18.2.7 常见增长函数比较 412
18.3 起泡排序 413
18.4 归并排序 415
18.5 快速排序 418
18.6 堆排序 421
18.7 外排序 422
18.7.1 实现阶段i 423
18.7.2 实现阶段ii 424
18.7.3 合并两个阶段 426
18.7.4 外排序分析 429
小结 429
习题 430
程序设计练习 431
第19章 stl容器 433
19.1 引言 433
19.2 stl基础 433
19.3 stl迭代器 437
19.3.1 迭代器类型 439
19.3.2 迭代器运算符 439
19.3.3 预定义的迭代器 441
19.3.4 istream_iterator和ostream_iterator 442
19.4 顺序容器 443
19.4.1 顺序容器:vector 443
19.4.2 顺序容器:deque 445
19.4.3 顺序容器:list 446
19.5 关联容器 449
19.5.1 关联容器:set和multiset 449
19.5.2 关联容器:map和multimap 451
19.6 容器适配器 452
19.6.1 容器适配器:stack 452
19.6.2 容器适配器:queue 453
19.7 容器适配器:priority_queue 454
小结 454
习题 455
程序设计练习 457
第20章 stl算法 459
20.1 引言 459
20.2 算法类型 459
20.3 copy 461
20.4 fill和fill_n 462
20.5 generate和generate_n 463
20.6 remove、remove_if、remove_copy和remove_copy_if 464
20.7 replace、replace_if、replace_copy和replace_copy_if 466
20.8 find、find_if、find_end和find_first_of 468
20.9 search和search_n 472
20.10 sort和binary_search 473
20.11 adjacent_find、merge和inplace_merge 475
20.12 reverse和reverse_copy 476
20.13 rotate和rotate_copy 477
20.14 swap、iter_swap和swap_ranges 478
20.15 count和count_if 479
20.16 max_element和min_element 479
20.17 random_shuffle 480
20.18 for_each和transform 481
20.19 includes、set_union、set_difference、set_intersection和set_symmetric_difference 481
20.20 accumulate、adjacent_difference、inner_product和partial_sum 484
小结 486
习题 487
程序设计练习 489
附录 491
附录a c++关键字 492
附录b ascii字符集 493
附录c 运算符优先级表 494
附录d 位运算... 495
Introduction to programming with C++
- 名称
- 类型
- 大小
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×
亲爱的云图用户,
光盘内的文件都可以直接点击浏览哦
无需下载,在线查阅资料!
