当前课程知识点:C++语言程序设计进阶 > 第十章 泛型程序设计与C++标准模板库 > 导学 > 导学
大家好
欢迎回来继续学习
C++语言程序设计
这一周呢
我和李超老师要一起
为大家介绍泛型程序设计
和C++的STL标准模板库
在前面的章节中
很多例题中
我们已经多多少少用过一些
标准模板库里面的模板了
比如说我们引用过
这个vector向量类模板了
同学们可能也知道
这个STL库里面有很多好东西
有很多宝贝
今天我们就来一起
带大家来寻宝
有什么宝贝呢
那我们想想到现在为止
我们编程序还需要些什么呢
学了前面的内容
我相信大家已经觉得
现在写程序已经比较自如了
但是我们如果什么东西
都从刀耕火种开始自己动手来写
这个工作量也是蛮大的
虽然我们自己设计的类
还有类的继承关系这些
都可以帮我们进行代码的复用
但是我们知道
STL库中有很多宝贝
我们要能把这些宝贝
都继承过来
拿来直接使用
那我们写程序的效率
不就更高了吗
是的
这里面有些什么宝贝
接下来
李超老师给大家介绍一下
泛型程序设计就是指
把代码从特定的数据结构中
分离出来
使得它不依赖于特定的数据结构
而更加通用
那么我们基于算法的抽象
和数据容器的抽象
就可以实现更高层次的代码复用
是这样的
实际上
这个库是一个开放的 可扩展的
由于容器可以通用
适用于所有数据类型
而算法又
独立于容器
这样的话呢
当增加新容器的时候
原有的算法
也是可以适用于新容器的
当增加新算法的时候
那么新算法
适用于原有的容器
也是没有问题的
所以这个可扩展性其实非常好
对 非常的方便
那我们接下来郑老师
会给大家介绍的STL这个库呢
实际上就是
泛型程序设计中的一个
非常好的典范
既然算法和容器
它彼此独立
那算法处理的对象
应该是容器里面的数据
这个数据怎么传过去呢
很奇妙
通过一个叫迭代器的东西
也就是说
每个容器能够把自己的迭代器
给它反馈出来
把迭代器给到算法
迭代器是什么
其实就是泛型的指针
它就像指针一样
相当于算法得到了容器里面
反馈出来的迭代器
用迭代器就可以遍历
和访问容器里面的元素
就可以对它进行操作
而不需要把一个具体的容器
传给算法
这样的话呢
算法就更为通用
就可以作用于多种容器
大家觉得是不是有点抽象
有点费解呢
你先把这个所谓的迭代器
想成一个功能更为强大
特别强大的指针就行了
对吧
对 除此之外呢
我们还会有一个适配器的概念
会使得这些已经本来很强大
很灵活的算法
容器和迭代器
更加的灵活和通用
是啊
适配器实际上
它就是一种
在原有的类模板基础上
附加的一种接口
或者说限制 对吧
对
像比如说我们可以有
这种顺序容器
但是在顺序容器之上呢
我们加上适配器
就可以有栈 队列
这些结构就出来了
我们在第九章的时候
其实学过
栈 队列
它都存取操作受限制的线性表
那么实际上在STL库里面
也是这样实现的
就是在顺序容器的基础之上
加上适配器
那么实际上函数
也有函数的适配器
有的时候呢
我们的函数不是那么恰好符合
要用的那个使用的需要
这个时候呢
加个适配器转换一下
就好使了
大概适配器就这么个意思
那这一章呢
还是我来给大家
介绍基本概念 基本语法
以及这个STL库的大致的结构
还有呢
很多验证性的例子
这一章呢
书上的例子特别多
有20多个例子
在我的课里面
也会给大家讲10几个例子
还有一些例子大家去看书
那么李超老师呢
会给大家带来综合实例
以及实验
这一章
其实学习这一章的最好办法
就是从模仿开始 对吧
因为STL库确实太庞大了
而且 初学者真的一开始
看见这个库就找不着北
所以
这一章咱们给的例子比较多
你还有综合实例给大家
大家先从模仿开始
其实模仿
是不是也是一种很好的学习方式
对
模仿是非常好的学习方式
那么大家可以在
模仿和理解郑老师给大家
举的各种例子之外呢
在实验的环节
自己动手去试一试
在实验的环节呢
我们将让大家去体验一下
怎么样使用容器
我们会实现一个双端队列
然后怎么样去使用算法
我们STL模板库中的查找
和排序算法
来体会它的精妙
和它的强大
那在综合实例里头呢
我们将用vector
来替代之前的array
来实现更加简洁的代码实现
除此之外呢
我们还会用
多映射结构
来使得我们的范围查找
更加的方便 更加的快捷
-导学
--导学
-继承的基本概念和语法
-第七章 继承与派生--继承的基本概念和语法习题
-继承方式
-第七章 继承与派生--继承方式
-基类与派生类类型转换
-第七章 继承与派生--基类与派生类类型转换
-派生类的构造和析构
--派生类的构造函数
--派生类的析构函数
--第七章 继承与派生--派生类的构造和析构
-派生类成员的标识与访问
--虚基类
-第七章 继承与派生--派生类成员的标识与访问
-小结
--小结
-综合实例
--第七章综合实例
-实验七
--实验七
-导学
--导学
-第八章 多态性--导学
-运算符重载
--运算符重载的规则
-第八章 多态性--运算符重载
-虚函数
--虚函数
--虚析构函数
--虚表与动态绑定
-第八章 多态性--虚函数
-抽象类
--抽象类
--第八章 多态性--抽象类
-override与final
-第八章 多态性--override与final
-小结
--第八章小结
-综合实例
--第八章综合实例
-实验八
--实验八
- 第八章讲义
-导学
--导学
-模板
--函数模板
--类模板
-第九章 模板与群体数据--模板
-线性群体
--线性群体的概念
-第九章 模板与群体数据--线性群体
-数组
--数组类模板
-链表
--链表类模板
-第九章 模板与群体数据--链表
-栈
--栈类模板
--栈类模板课后习题
--例9-9 栈的应用课后习题
-队列
--队列类模板
-第九章 模板与群体数据--队列
-排序
--排序概述
--插入排序
--选择排序
--交换排序
-第九章 模板与群体数据--排序
-查找
--查找
--查找课后习题
-小结
--小结
-综合实例
--综合实例
-实验九
--实验九
- 第九章讲义
-导学
--导学
-泛型程序设计及STL的结构
--STL简介
-第十章 泛型程序设计与C++标准模板库--泛型程序设计及STL的结构
-迭代器
--迭代器
-第十章 泛型程序设计与C++标准模板库--迭代器
-容器的基本功能与分类
-第十章 泛型程序设计与C++标准模板库--容器的基本功能与分类
-顺序容器
--顺序容器的特征
--第十章 泛型程序设计与C++标准模板库--顺序容器
-关联容器
--集合
--映射
-第十章 泛型程序设计与C++标准模板库--关联容器
-函数对象
--函数对象
--函数适配器
-算法
--算法
-小结
--第十章小结
-综合实例
--综合实例
-实验十
--实验十
- 第十章讲义
-导学
--导学
-I/O流的概念及流类库结构
-第十一章 流类库与输入/输出--I/O流的概念及流类库结构
-输出流
--输出流概述
--向文本文件输出
--向二进制文件输出
--向字符串输出
-第十一章 流类库与输入/输出--输出流
-输入流
--输入流概述
--输入流应用举例
--从字符串输入
-第十一章 流类库与输入/输出--输入流
-输入/输出流
--输入/输出流
-第十一章 流类库与输入/输出--输入/输出流
-小结
--小结
-综合实例
--综合实例
-实验十一
--实验十一
- 第十一章讲义
-导学
--第12章导学
-异常处理的思想与程序实现
-第十二章 异常处理--异常处理的思想与程序实现
-异常处理中的构造与析构
-第十二章 异常处理--异常处理中的构造与析构
-标准程序库异常处理
-第十二章 异常处理--标准程序库异常处理
-小结
--第12章小结
-综合实例
--综合实例
-实验十二
--实验十二
- 第十二章讲义