当前课程知识点:C++语言程序设计进阶 > 第十章 泛型程序设计与C++标准模板库 > 容器的基本功能与分类 > 容器的基本功能与分类
容器类是容纳、包含一组元素或元素集合的对象。
基于容器中元素的组织方式:顺序容器、关联容器
按照与容器所关联的迭代器类型划分:可逆容器随机访问容器
容器
unorderedset (无序集合)、unorderedmultiset(无序多重集合)
unorderedmap(无序映射)、unordermultimap(无序多重映射)
set(集合)、multiset(多重集合)、map(映射)、multimap(多重映射)
array(数组)、vector(向量)、deque(双端队列)、forward_list(单链表)、list(列表)
顺序容器
(有序)关联容器
无序关联容器
容器的通用功能
用默认构造函数构造空容器
支持关系运算符:==、!=、<、<=、>、>=
begin()、end():获得容器首、尾迭代器
clear():将容器清空
empty():判断容器是否为空
size():得到容器元素个数
s1.swap(s2):将s1和s2两容器内容交换
相关数据类型(S表示容器类型)
S::iterator:指向容器元素的迭代器类型
S::const_iterator:常迭代器类型
STL为每个可逆容器都提供了逆向迭代器,逆向迭代器可以通过下面的成员函数得到:
rbegin() :指向容器尾的逆向迭代器
rend():指向容器首的逆向迭代器
逆向迭代器的类型名的表示方式如下:
S::reverse_iterator:逆向迭代器类型
S::constreverseiterator:逆向常迭代器类型
随机访问容器支持对容器的元素进行随机访问
s[n]:获得容器s的第n个元素
大家好
欢迎回来继续学习
C++语言程序设计
现在我们来了解一下
容器的基本功能和它的分类
容器是用来容纳
一组数据元素的对象
容器按照它的
内部数据组织的形式
可以分成顺序容器
和关联容器
按照容器所关联的
迭代器的工作方式
又可以分成可逆容器
和随机访问容器
按照容器中的数组组织方式
容器分成顺序容器
和关联容器
关联容器又可以分成有序的
和无序的
那这里列出了常用的顺序容器
关联容器
从这张图我们可以看到
顺序容器和关联容器
都是属于容器
是它的子概念
可逆容器是容器的子概念
而随机访问容器
又是可逆容器的子概念
这张图上
我们给出了几个容器的例子
比如说list列表
它从迭代器的访问方式
来分类呢
它属于可逆容器
从容器中的数据组织方式
来分类呢
它属于顺序容器
而vector既是随机访问容器
也是顺序容器 deque也是
那么set map
就是集合 映射
还有多重集合 multiset
和多重映射 multimap
它们既是关联容器
也是可逆容器
现在我们来看一下
容器有哪些通用的功能
容器的通用功能
包括用默认构造函数
构造一个空容器
进行关系运算
还有通过begin end函数
获得容器的首尾迭代器
用clear函数将容器清空
用empty函数呢
判断容器是否为空
用size函数
得到容器中的元素个数
用swap函数
将s1和s2两个容器的内容
进行交换
这里面涉及到的相关数据类型呢
有指向容器元素的迭代器类型
itrator类型
还有常迭代器类型
const_iterator
STL为每个可逆容器
都提供了逆向迭代器
逆向迭代器可以通过
成员函数rbegin和rend
得到指向容器尾的逆向迭代器
和指向容器首的逆向迭代器
这个rbegin
它返回的这个迭代器
是以容器的尾当做头来用
就是这个意思
所以它指向的是容器的尾
但是它的遍历方向
可以从尾向头这个方向来走
rend呢是将容器的开始位置
当做结束位置
所以它是指向容器的首
逆向迭代器的类名
是这样来表示的
reverse_itrator
就表示逆向迭代器类型
const_reverse_iterator
表示逆向常迭代器类型
而随即访问容器呢
就可以像我们使用数组一样
随机访问容器中的任何一个元素
我们可以用容器对象名
加上下标运算符
就可以访问到
容器中的指定元素了
-导学
--导学
-继承的基本概念和语法
-第七章 继承与派生--继承的基本概念和语法习题
-继承方式
-第七章 继承与派生--继承方式
-基类与派生类类型转换
-第七章 继承与派生--基类与派生类类型转换
-派生类的构造和析构
--派生类的构造函数
--派生类的析构函数
--第七章 继承与派生--派生类的构造和析构
-派生类成员的标识与访问
--虚基类
-第七章 继承与派生--派生类成员的标识与访问
-小结
--小结
-综合实例
--第七章综合实例
-实验七
--实验七
-导学
--导学
-第八章 多态性--导学
-运算符重载
--运算符重载的规则
-第八章 多态性--运算符重载
-虚函数
--虚函数
--虚析构函数
--虚表与动态绑定
-第八章 多态性--虚函数
-抽象类
--抽象类
--第八章 多态性--抽象类
-override与final
-第八章 多态性--override与final
-小结
--第八章小结
-综合实例
--第八章综合实例
-实验八
--实验八
- 第八章讲义
-导学
--导学
-模板
--函数模板
--类模板
-第九章 模板与群体数据--模板
-线性群体
--线性群体的概念
-第九章 模板与群体数据--线性群体
-数组
--数组类模板
-链表
--链表类模板
-第九章 模板与群体数据--链表
-栈
--栈类模板
--栈类模板课后习题
--例9-9 栈的应用课后习题
-队列
--队列类模板
-第九章 模板与群体数据--队列
-排序
--排序概述
--插入排序
--选择排序
--交换排序
-第九章 模板与群体数据--排序
-查找
--查找
--查找课后习题
-小结
--小结
-综合实例
--综合实例
-实验九
--实验九
- 第九章讲义
-导学
--导学
-泛型程序设计及STL的结构
--STL简介
-第十章 泛型程序设计与C++标准模板库--泛型程序设计及STL的结构
-迭代器
--迭代器
-第十章 泛型程序设计与C++标准模板库--迭代器
-容器的基本功能与分类
-第十章 泛型程序设计与C++标准模板库--容器的基本功能与分类
-顺序容器
--顺序容器的特征
--第十章 泛型程序设计与C++标准模板库--顺序容器
-关联容器
--集合
--映射
-第十章 泛型程序设计与C++标准模板库--关联容器
-函数对象
--函数对象
--函数适配器
-算法
--算法
-小结
--第十章小结
-综合实例
--综合实例
-实验十
--实验十
- 第十章讲义
-导学
--导学
-I/O流的概念及流类库结构
-第十一章 流类库与输入/输出--I/O流的概念及流类库结构
-输出流
--输出流概述
--向文本文件输出
--向二进制文件输出
--向字符串输出
-第十一章 流类库与输入/输出--输出流
-输入流
--输入流概述
--输入流应用举例
--从字符串输入
-第十一章 流类库与输入/输出--输入流
-输入/输出流
--输入/输出流
-第十一章 流类库与输入/输出--输入/输出流
-小结
--小结
-综合实例
--综合实例
-实验十一
--实验十一
- 第十一章讲义
-导学
--第12章导学
-异常处理的思想与程序实现
-第十二章 异常处理--异常处理的思想与程序实现
-异常处理中的构造与析构
-第十二章 异常处理--异常处理中的构造与析构
-标准程序库异常处理
-第十二章 异常处理--标准程序库异常处理
-小结
--第12章小结
-综合实例
--综合实例
-实验十二
--实验十二
- 第十二章讲义