C++程序设计,基础、编程抽象与算法策略

《C++程序设计语言》介绍了标准C++以及由C++所支持的关键性编程技术和设计技术。标准C++较以前的版本功能更强大,其中许多新的语言特性,如名字空间、异常、模板、运行时类型声明等使得新技术得以直接应用。这本书围绕语言及库功能来组织,内容涉及C++的主要特征及标准库,并通过系统软件领域中的实例解释说明一些关键性的概念与技术。

此特别版增加了关于现场和标准库的异常时安全性两个附录,这就使书的内容完全地和权威性地覆盖了整个C++语言,其标准库,以及关键性的设计技术。

文章目录

第1章 C++概述
1.1 你的第一个C++程序
1.2 C++的历史
1.2.1 面向对象范型
1.2.2 C++的演化
1.3 编译过程
1.4 C++程序结构
1.4.1 注释
1.4.2 包含的库文件
1.4.3 函数原型
1.4.4 主程序
1.4.5 函数定义
1.5 变量
1.5.1 变量声明
1.5.2 命名规则
1.5.3 局部变量和全局变量
1.5.4 常量
1.6 数据类型
1.6.1 数据类型的概念
1.6.2 整数类型
1.6.3 浮点类型
1.6.4 布尔类型
1.6.5 字符
1.6.6 字符串
1.6.7 枚举类型
1.6.8 复合类型
1.7 表达式
1.7.1 优先级和结合律
1.7.2 表达式中的混合类型
1.7.3 整数除法和求余操作符
1.7.4 类型转换
1.7.5 赋值操作符
1.7.6 自增和自减操作符
1.7.7 布尔运算
1.8 语句
1.8.1 简单语句
1.8.2 块
1.8.3 if语句
1.8.4 switch语句
1.8.5 while语句
1.8.6 for语句
本章小结
复习题
习题
第2章 函数与库
2.1 函数概念
2.1.1 数学中的函数
2.1.2 编程中的函数
2.1.3 使用函数的优点
2.1.4 函数和算法
2.2 库
2.3 在C++中定义函数
2.3.1 函数原型
2.3.2 重载
2.3.3 默认形参数
2.4 函数调用机制
2.4.1 函数调用步骤
2.4.2 组合函数
2.4.3 追踪组合函数执行过程
2.5 引用参数
2.6 接口与实现
2.6.1 定义error库
2.6.2 导出数据类型
2.6.3 导出常量定义
2.7 接口设计原则
2.7.1 统一主题的重要性
2.7.2 简单性与信息隐藏原理
2.7.3 满足用户需求
2.7.4 通用工具的优势
2.7.5 库稳定性的价值
2.8 随机数库的设计
2.8.1 随机数与伪随机数
2.8.2 标准库中的伪随机数
2.8.3 选择正确的函数集
2.8.4 构建用户程序
2.8.5 随机数库的实现
2.8.6 初始化随机数种子
2.9 Stanford类库介绍
2.9.1 简单的输入和输出类库
2.9.2 Stanford类库中的图形处理程序
本章小结
复习题
习题
第3章 字符串类string
3.1 使用字符串作为抽象数据
3.2 字符串操作
3.2.1 操作符重载
3.2.2 从一个字符串中选取字符
3.2.3 字符串赋值
3.2.4 提取字符串中的子串
3.2.5 在一个字符串中进行搜索
3.2.6 循环遍历字符串中的所有字符
3.2.7 通过连接扩展字符串
3.3 <cctype>库
3.4 修改字符串中的内容
3.5 遗留的C风格字符串
3.6 编写字符串应用程序
3.6.1 回文识别
3.6.2 将英语翻译成儿童黑话
3.7 strlib.h库
本章小结
复习题
习题
第4章 流类
4.1 格式化输出
4.2 格式化输入
4.3 数据文件
4.3.1 使用文件流
4.3.2 单个字符的输入/输出
4.3.3 面向行的输入/输出
4.3.4 格式化输入/输出
4.3.5 字符串流
4.3.6 一个用于控制台输入的更鲁棒的策略
4.4 类层次
4.4.1 生物层次
4.4.2 流类层次
4.4.3 在流层次中选择正确的层次
4.5 simpio.h和filelib.h库
本章小结
复习题
习题
第5章 集合类
5.1 Vector类
5.1.1 指定Vector的基类型
5.1.2 声明Vector对象
5.1.3 Vector的操作
5.1.4 从Vector对象中选择元素
5.1.5 作为参数传递Vector对象
5.1.6 创建预先定义大小的Vector
5.1.7 Vector类的构造函数
5.1.8 Vector中的操作符
5.1.9 表示二维结构
5.1.10 Stanford类库中的Grid类
5.2 Stack类
5.2.1 Stack类结构
5.2.2 栈和小型计算器
5.3 Queue类
5.3.1 仿真和模型
5.3.2 排队模型
5.3.3 离散时间
5.3.4 仿真时间中的事件
5.3.5 实现仿真
5.4 Map类
5.4.1 Map类的结构
5.4.2 在一个应用中使用Map类
5.4.3 Map类作为关联数组
5.5 Set类
5.5.1 实现<cctype>库
5.5.2 创建单词列表
5.5.3 Stanford类库中的Lexicon类
5.6 在集合上进行迭代
5.6.1 迭代顺序
5.6.2 再论儿童黑话
5.6.3 计算单词的频率
本章小结
复习题
习题
第6章 类的设计
6.1 二维点的表示
6.1.1 将Point定义为结构类型
6.1.2 将Point定义为类
6.1.3 接口与实现的分离
6.2 操作符重载
6.2.1 重载插入操作符
6.2.2 判断两个点是否相等
6.2.3 为Direction类型增加操作符
6.3 有理数
6.3.1 定义新类的机制
6.3.2 采用用户的观点
6.3.3 确定Rational类的私有实例变量
6.3.4 为Rational类定义构造函数
6.3.5 为Rational类定义方法
6.3.6 实现Rational类
6.4 token扫描器类的设计
6.4.1 用户想从记号扫描器中得到什么
6.4.2 tokenscanner.h接口
6.4.3 实现TokenScanner类
6.5 将程序封装成类
本章小结
复习题
习题
第7章 递归简介
7.1 一个简单的递归例子
7.2 阶乘函数
7.2.1 fact的递归公式
7.2.2 追踪递归过程
7.2.3 递归的稳步跳跃
7.3 斐波那契函数
7.3.1 计算斐波那契数列项
7.3.2 在递归实现中获得自信
7.3.3 递归实现的效率
7.3.4 递归不应被指责
7.4 检测回文
7.5 二分查找算法
7.6 间接递归
7.7 递归地思考
7.7.1 保持全局的观点
7.7.2 避免常见的错误
本章小结
复习题
习题
第8章 递归策略
8.1 汉诺塔
8.1.1 问题框架
8.1.2 找到一种递归策略
8.1.3 验证这个策略
8.1.4 编码方案
8.1.5 跟踪递归过程
8.2 子集求和问题
8.2.1 寻找一个递归解决方案
8.2.2 包含/排除模式
8.3 字符排列
8.4 图的递归
8.4.1 一个来自计算机艺术的实例
8.4.2 分形
本章小结
复习题
习题
第9章 回溯算法
9.1 迷宫的递归回溯
9.1.1 右手法则
9.1.2 寻找一种递归方法
9.1.3 确定简单情况
9.1.4 对迷宫问题的解决算法进行编码
9.1.5 说服你自己那个方案可行
9.2 回溯与游戏
9.2.1 拿子游戏
9.2.2 一个通用的双人游戏程序
9.3 最小最大算法
9.3.1 游戏树
9.3.2 评价位置和走法
9.3.3 限制递归搜索的深度
9.3.4 实现最小最大算法
本章小结
复习题
习题
第10章 算法分析
10.1 排序问题
10.1.1 选择排序算法
10.1.2 性能的经验评估
10.1.3 分析选择排序算法的性能
10.2 时间复杂度
10.2.1 大O符号
10.2.2 大O的标准简化
10.2.3 选择排序算法的时间复杂度
10.2.4 从代码中降低时间复杂度
10.2.5 最坏情况以及平均情况下的复杂度
10.2.6 大O符号的正式定义
10.3 递归的终止
10.3.1 分治策略的作用
10.3.2 合并两个矢量
10.3.3 归并排序算法
10.3.4 归并排序的计算复杂度
10.3.5 比较N2与Nlog2N的性能
10.4 标准的算法复杂度类别
10.5 快速排序算法
10.5.1 划分矢量
10.5.2 快速排序算法的性能分析
10.6 数学归纳法
本章小结
复习题
习题
第11章 指针和数组
11.1 内存结构
11.1.1 位、字节和字
11.1.2 二进制和十六进制表示
11.1.3 表示其他数据类型
11.1.4 内存地址
11.1.5 为变量分配内存
11.2 指针
11.2.1 把地址当作数值
11.2.2 声明指针变量
11.2.3 基本的指针运算
11.2.4 指向结构和对象的指针
11.2.5 关键字this
11.2.6 特殊的指针NULL
11.2.7 指针和引用调用
11.3 数组
11.3.1 声明数组
11.3.2 数组元素的选择
11.3.3 数组的静态初始化
11.3.4 有效容量和分配容量
11.3.5 指针和数组的关系
11.4 指针运算
11.4.1 数组索引和内存地址
11.4.2 指针的自增自减运算
11.4.3 C风格字符串
11.4.4 指针运算和程序风格
本章小结
复习题
习题
第12章 动态内存管理
12.1 动态分配和堆
12.1.1 new操作符
12.1.2 动态数组
12.1.3 动态对象
12.2 链表
12.2.1 刚铎灯塔
12.2.2 链表内的迭代
12.2.3 递归和列表
12.3 释放内存
12.3.1 delete操作符
12.3.2 释放内存策略
12.3.3 析构函数
12.4 定义CharStack类
12.4.1 charstack.h接口
12.4.2 选择字符栈的表示
12.5 堆-栈图
12.6 单元测试
12.7 拷贝对象
12.7.1 深拷贝和浅拷贝
12.7.2 赋值和拷贝构造函数
12.8 关键字const的使用
12.8.1 常量定义
12.8.2 常量引用调用
12.8.3 const方法
12.9 CharStack类的效率
本章小结
复习题
习题
第13章 效率和表示
13.1 编辑文本的软件模式
13.2 设计简单的文本编辑器
13.2.1 编辑器命令
13.2.2 EditorBuffer类的公有接口
13.2.3 选择一种底层表示
13.2.4 编写编辑器应用代码
13.3 基于数组的类实现
13.3.1 定义私有数据结构
13.3.2 缓冲区操作的实现
13.3.3 基于数组的编辑器的时间复杂度
13.4 基于栈的类实现
13.4.1 定义私有数据结构
13.4.2 缓冲区操作的实现
13.4.3 时间复杂度的比较
13.5 基于列表的类实现
13.5.1 链表缓冲区的插入操作
13.5.2 链表缓冲区的删除操作
13.5.3 链表表示法中光标的移动
13.5.4 缓冲区实现的完善
13.5.5 基于链表的缓冲区的时间复杂度
13.5.6 双向链表
13.5.7 时空权衡
本章小结
复习题
习题
第14章 线性结构
14.1 模板
14.2 栈的实现
14.2.1 使用动态数组实现栈
14.2.2 使用链表实现栈
14.3 队列的实现
14.3.1 基于数组的队列实现
14.3.2 队列的链表表示
14.4 实现矢量类
14.5 集成原型和代码
本章小结
复习题
习题
第15章 映射
15.1 使用矢量实现映射
15.2 查找表
15.3 哈希
15.3.1 设计数据结构
15.3.2 为字符串定义哈希函数
15.3.3 实现哈希表
15.3.4 跟踪哈希表的实现
15.3.5 调整桶的数目
15.4 实现HashMap类
本章小结
复习题
习题
第16章 树
16.1 家谱
16.1.1 用来描述树的术语
16.1.2 树的递归特性
16.1.3 用C++语言表示家谱
16.2 二叉搜索树
16.2.1 使用二叉搜索树的动机
16.2.2 在二叉搜索树中寻找节点
16.2.3 在二叉搜索树中插入一个新节点
16.2.4 删除节点
16.2.5 树的遍历
16.3 平衡树
16.3.1 平衡树策略
16.3.2 可视化AVL算法
16.3.3 单旋转
16.3.4 双旋转
16.3.5 实现AVL算法
16.4 使用BST实现映射
16.5 偏序数
本章小结
复习题
习题
第17章 集合
17.1 集合作为一种数学抽象
17.1.1 隶属关系
17.1.2 集合运算
17.1.3 集合恒等式
17.2 集合接口的扩展
17.3 集合的实现策略
17.4 优化小整数的集合
17.4.1 特征向量
17.4.2 压缩的位数组
17.4.3 位操作符
17.4.4 实现特征向量
17.4.5 实现高级集合运算
17.4.6 模板特化
17.4.7 使用一种混合的实现
本章小结
复习题
习题
第18章 图
18.1 图的结构
18.1.1 有向图和无向图
18.1.2 路径和回路
18.1.3 连通性
18.2 表示策略
18.2.1 用邻接表表示连接关系
18.2.2 用邻接矩阵表示连接关系
18.2.3 用弧集合表示关系
18.3 一种低层的图抽象
18.4 图的遍历
18.4.1 深度优先搜索
18.4.2 广度优先搜索
18.5 定义图类
18.5.1 用类表示图、节点和弧
18.5.2 用参数化的类实现图
18.6 寻找最短路径
18.7 搜索网页的算法
18.7.1 谷歌的网页排名算法
18.7.2 网页排名算法的一个简例
本章小结
复习题
习题
第19章 继承
19.1 简单的继承
19.1.1 指定模板类中的类型
19.1.2 定义Employee类
19.1.3 C++中子类的局限性
19.2 图形对象的继承层次
19.2.1 调用父类的构造函数
19.2.2 将GObject类指针存储在矢量中
19.3 表达式的类层次
19.3.1 异常处理
19.3.2 表达式结构
19.3.3 表达式的递归定义
19.3.4 二义性
19.3.5 表达式树
19.3.6 exp.h接口
19.3.7 Expression子类的表示
19.3.8 表达式图解
19.3.9 方法的实现
19.4 解析表达式
19.4.1 语句解析和语法
19.4.2 考虑运算的优先级
19.4.3 递归下降语法分析器
19.5 多重继承
19.5.1 stream类库中的多重继承
19.5.2 在GObject继承层次中添加GFillable类
19.5.3 多重继承的危险性
本章小结
复习题
习题
第20章 迭代策略
20.1 使用迭代器
20.1.1 简单的迭代器例子
20.1.2 迭代器的层次结构
20.2 使用函数作为数据值
20.2.1 函数指针
20.2.2 简单的画图应用
20.2.3 声明函数指针
20.2.4 实现plot函数
20.2.5 映射函数
20.2.6 实现映射函数
20.2.7 回调函数的限制
20.3 用函数封装数据
20.3.1 使用对象模拟闭包
20.3.2 函数对象的简单例子
20.3.3 向映射函数传递函数对象
20.3.4 编写以函数作为参数的函数
20.4 STL算法库
20.5 C++的函数式编程
20.5.1 STL库<functional>的接口
20.5.2 比较函数
20.6 迭代器的实现
20.6.1 为矢量类实现迭代器
20.6.2 将指针作为迭代器
20.6.3 typedef关键字
20.6.4 为其他集合类实现迭代器
本章小结

下载权限

查看
  • 免费下载
    评论并刷新后下载
    登录后下载

  • {{attr.name}}:
您当前等级为
登录后免费下载登录 黑名单反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 需要登录 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级权限
您有每天免费下载所有资源次特权,今日剩余 已取得下载权限
重要声明

本站资源均来自网络分享,仅用于站内学习或测试研究使用。如有侵犯您的权益请私信留言,我们会第一时间审核。未经原版权作者许可,禁止用于任何商业途径,请在下载二十四小时内删除!


如果遇到需要升级才可获取的素材,建议升级对应的权限。 全站 90% 以上的素材“均有备份”。 本站资源均以主流网盘分享,以 7z、rar、分卷等常见的格式压缩,为防止有人压缩软件不支持 7z 格式,7z 解压,建议下载 7-zip,zip、rar 解压,建议下载 WinRAR 手机下载解压教程详见 帮助中心 。

学习课程

七分学堂,恋爱核武器 2.0 课程

2022-04-04 02:00

学习课程

玩转手机影像全系课,小白也能进阶成为手机摄影专业人士

2022-04-04 12:00

相关文章

C++ Primer Plus 第 6 版 中文版

C++ Primer Plus 第 6 版 中文版

C++是在C语言基础上开发的一种集面向对象编程、通用编程和传统的过程化编程于一体的编程语言,是C语言的超集。本书是根据2003年的ISO/ANSI C++标准编写的。通过大量短小精悍的程序详细而全面地阐述了C++的基本概念和技术。全书分为18章和10个附录,分别介绍了C++程序的运行方式、基本数据类…

七天学会数学建模及 MATLAB 编程

七天学会数学建模及 MATLAB 编程

本课程需要有一定的基础,不然会有些吃力;综合而言本课程只能算是一些算法的入门引导课程,听课完全是不够的,需要结合一些其他资料进行学习,课程一些附件资料很好。

[图书馆] HBase 不睡觉书

[图书馆] HBase 不睡觉书

HBase 是 Apache 旗下一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。利用HBase技术可在廉价的PC服务器上搭建大规模的存储化集群,使用HBase可以对数十亿级别的大数据进行实时性的高性能读写,在满足高性能的同时还保证了数据存取的原子性。 本书共分为9章,由浅入深地讲解HBase…

SpringBoot 揭秘,快速构建微服务体系

SpringBoot 揭秘,快速构建微服务体系

本书以微服务的基本概念开篇,逐步引出 Java 平台下打造微服务的利器 SpringBoot 微框架,从 SpringBoot 微框架的出身和源头,一步步剖析了 SpringBoot 微框架的设计理念和原理,并对框架的重点功能和模块进行了讲解。
0 条回复 A文章作者 M管理员
发表垃圾评论,一经核查直接关小黑屋
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
全站搜索