目 录
第0章 致读者 1
0.1 本书的结构 2
0.2 讲授和学习本书的方法 4
0.3 ISO C++标准 7
0.4 PPP支持 10
0.5 作者简介 11
0.6 参考资料 12
附言 12
第一部分 基础 13
第1章 Hello, World! 14
1.1 程序 15
1.2 经典的第一个程序 15
1.3 编译 17
1.4 链接 19
1.5 编程环境 20
练习题 21
思考题 22
术语 22
解答题 23
附言 24
第2章 对象、类型和值 25
2.1 输入 26
2.2 变量 28
2.3 输入与类型 29
2.4 运算与运算符 30
2.5 赋值与初始化 32
2.6 名称 36
2.7 类型与对象 38
2.8 类型安全 39
2.9 转换 40
2.10 类型推导:auto 42
练习题 42
思考题 43
术语 44
解答题 44
附言 45
第3章 计算 46
3.1 计算的定义 47
3.2 目标与工具 48
3.3 表达式 49
3.4 语句 53
3.5 函数 62
3.6 vector 65
3.7 语言特性 70
练习题 70
思考题 71
术语 72
解答题 72
附言 74
第4章 错误 75
4.1 引言 76
4.2 错误来源 77
4.3 编译时错误 78
4.4 链接时错误 80
4.5 运行错误 80
4.6 异常 85
4.7 避免错误、发现错误 91
练习题 100
思考题 101
术语 102
解答题 102
附言 104
第5章 写一个程序 105
5.1 提出问题 106
5.2 分析问题 106
5.3 回到计算器! 109
5.4 重新设计 115
5.5 将语法转化为代码 119
5.6 尝试第一个版本 125
5.7 尝试第二个版本 129
5.8 标记流 130
5.9 程序结构 135
练习题 136
思考题 136
术语 137
解答题 137
附言 138
第6章 完成一个程序 139
6.1 引言 140
6.2 输入与输出 140
6.3 错误处理 142
6.4 负数 144
6.5 求余数:% 146
6.6 代码整理 147
6.7 从错误中恢复 152
6.8 变量 154
练习题 162
思考题 163
术语 163
解答题 163
附言 164
第7章 技术细节:函数等 165
7.1 技术细节 166
7.2 声明与定义 167
7.3 作用域 171
7.4 函数调用与返回 175
7.5 求值顺序 189
7.6 命名空间 192
7.7 模块与头文件 194
练习题 197
思考题 198
术语 199
解答题 200
附言 201
第8章 技术细节:类及其他 202
8.1 自定义类型 203
8.2 类和成员 204
8.3 接口与实现 204
8.4 类的演化:Date 206
8.5 枚举类型 213
8.6 运算符重载 215
8.7 类接口 217
练习题 224
思考题 225
术语 225
解答题 225
附言 227
第二部分 输入和输出 229
第9章 输入和输出流 230
9.1 输入与输出 231
9.2 I/O流模型 232
9.3 文件 233
9.4 I/O 错误处理 237
9.5 读取单个值 239
9.6 用户自定义输出运算符 244
9.7 用户自定义输入运算符 245
9.8 标准输入循环 245
9.9 读取结构化文件 247
9.10 格式化 254
9.11 字符串流 260
练习题 261
思考题 262
术语 263
解答题 263
附言 265
第10章 显示模型 266
10.1 为什么需要图形? 267
10.2 显示模型 267
10.3 第一个示例 268
10.4 使用GUI库 271
10.5 坐标系 272
10.6 形状 273
10.7 使用形状原语 273
10.8 运行第一个示例 281
练习题 284
思考题 284
术语 285
解答题 285
附言 286
第11章 图形类 287
11.1 图形类概览 288
11.2 Point(点)和Line(线) 290
11.3 Lines(多线条) 291
11.4 Color(颜色) 294
11.5 Line_style(线条样式) 296
11.6 Polyline(折线) 298
11.7 封闭形状 302
11.8 Text(文本) 312
11.9 Mark(标记) 314
11.10 Image(图像) 315
练习题 317
思考题 318
术语 318
解答题 319
附言 319
第12章 类设计 320
12.1 设计原则 321
12.2 Shape 325
12.3 基类与派生类 331
12.4 其他Shape函数 338
12.5 面向对象编程的优势 339
练习题 340
思考题 341
术语 341
解答题 342
附言 343
第13章 绘制函数和数据 344
13.1 引言 345
13.2 绘制简单函数图形 345
13.3 Function 348
13.4 Axis(坐标轴) 351
13.5 近似 353
13.6 绘制数据 357
练习题 363
思考题 364
术语 365
解答题 365
附言 366
第14章 图形用户界面 367
14.1 用户界面选择 368
14.2 Next按钮 369
14.3 一个简单的窗口 370
14.4 Button(按钮)和其他Widget(控件) 372
14.5 一个例子:绘制线条 376
14.6 简单动画 382
14.7 调试GUI代码 384
练习题 386
思考题 386
术语 386
解答题 387
附言 387
第三部分 数据和算法 389
第15章 动态数组与自由存储区 390
15.1 引言 391
15.2 vector(动态数组)基础 392
15.3 内存、地址和指针 393
15.4 自由存储区和指针 396
15.5 析构函数 400
15.6 访问元素 404
15.7 一个例子:链表(list) 405
15.8 this指针 409
练习题 412
思考题 413
术语 414
解答题 414
附言 415
第16章 数组、指针与引用 416
16.1 数组 417
16.2 指针与引用 421
16.3 C风格字符串 423
16.4 指针用法的替代方案 425
16.5 示例:回文 427
练习题 431
思考题 431
术语 432
解答题 432
附言 433
第17章 基础操作 434
17.1 引言 435
17.2 元素访问 435
17.3 列表初始化 437
17.4 拷贝与移动 438
17.5 基础操作 446
17.6 其他有用操作 451
17.7 Vector剩余问题 452
17.8 改变大小 455
17.9 至此我们实现的Vector 459
练习题 461
思考题 461
术语 462
解答题 462
附言 462
第18章 模板与异常 463
18.1 模板 464
18.2 泛化Vector 471
18.3 范围检查与异常 474
18.4 资源与异常 478
18.5 资源管理指针 485
练习题 489
思考题 489
术语 490
解答题 490
附言 491
第19章 容器与迭代器 492
19.1 数据的存储与处理 493
19.2 序列与迭代器 499
19.3 链表 502
19.4 再次对Vector进行泛化 506
19.5 示例:一个简单的文本编辑器 512
19.6 vector、list与string 518
练习题 519
思考题 520
术语 520
解答题 521
附言 522
第20章 映射与集合 523
20.1 关联容器 524
20.2 map(映射) 524
20.3 unordered_map 530
20.4 计时 532
20.5 set(集合) 535
20.6 容器概览 536
20.7 范围(ranges)和迭代器 541
练习题 544
思考题 544
术语 545
解答题 545
附言 546
第21章 算法 547
21.1 标准库算法 548
21.2 函数对象 553
21.3 数值算法 557
21.4 拷贝 562
21.5 排序和搜索 563
练习题 565
思考题 566
术语 566
解答题 566
附言 567
