计算机科学丛书 C++程序设计 基础、编程抽象与算法策略
作者: (英)埃里克 S 罗伯茨(Eric S.Roberts)著
出版时间: 2016年版
丛编项: 计算机科学丛书
内容简介
本书是一本关于C++语言的经典书籍,全书共计20章,主要介绍了C++的基本知识、函数和库、字符串、流、集合、类的设计、递归、递归策略、回溯算法、算法分析、指针与数组、动态内存管理、效率与表示、线性结构、映射、树、图、继承、迭代的策略等内容。本书重点图突出,全面讲解了C++语言的基本概念,深入剖析了具体的编程思路。同事,每章后面都有配套的的习题,有助于读者进一步理解和掌握晦涩的概念。本书适合作为计算机专业及相关专业学生的教材或教学参考书,也适合希望学习C++语言的初学者和中高级程序员使用。
目录
出版者的话
译者序
前言
第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.5while语句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.9Stanford类库介绍73
2.9.1简单的输入和输出类库73
2.9.2Stanford类库中的图形处理程序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库93
3.4修改字符串中的内容94
3.5遗留的C风格字符串95
3.6编写字符串应用程序95
3.6.1回文识别96
3.6.2将英语翻译成儿童黑话96
3.7strlib.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.5simpio.h和filelib.h库127
本章小结128
复习题128
习题129
第5章 集合类 133
5.1Vector类134
5.1.1指定Vector的基类型134
5.1.2声明Vector对象135
5.1.3Vector的操作135
5.1.4从Vector对象中选择元素136
5.1.5作为参数传递Vector对象137
5.1.6创建预先定义大小的Vector138
5.1.7Vector类的构造函数141
5.1.8Vector中的操作符142
5.1.9表示二维结构143
5.1.10Stanford类库中的Grid类143
5.2Stack类144
5.2.1Stack类结构145
5.2.2栈和小型计算器145
5.3Queue类148
5.3.1仿真和模型149
5.3.2排队模型149
5.3.3离散时间150
5.3.4仿真时间中的事件150
5.3.5实现仿真151
5.4Map类154
5.4.1Map类的结构154
5.4.2在一个应用中使用Map类156
5.4.3Map类作为关联数组157
5.5Set类158
5.5.1实现库159
5.5.2创建单词列表160
5.5.3Stanford类库中的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 斐波那契