1、容器简介
1.1 顺序容器(序列容器)Sequence Container
![在这里插入图片描述](https://img-blog.csdnimg.cn/cb1383b150914e179a1c22b2d8453777.png)
容器 |
模板 |
特点 |
向量容器 |
vector |
从后面快速插入与删除,可以直接访问任何元素。 |
双向列表容器 |
list |
从任何地方快速插入与删除 |
双端链表容器 |
deque |
从前面或者后面快速插入与删除,可以直接访问任何元素。 |
1.2 关联容器 Associative Container
![在这里插入图片描述](https://img-blog.csdnimg.cn/264d42af22094938a9407e571d022ea4.png)
容器 |
模板 |
特点 |
映射容器 |
map |
一对多映射,基于关键字查找,不允许重复值 |
多重映射容器 |
multimap |
一对多映射,基于关键字快速查找,允许重复值 |
集合容器 |
set |
快速查找,不允许重复值 |
1.3 容器适配器 Container Adapter
容器 |
模板 |
特点 |
栈容器 |
stack |
后进先出(LIFO) |
队列容器 |
queue |
先进后出(FIFO) |
优先级队列容器 |
priority_queue |
最高优先级元素先出 |
2、容器通常操作
2.1 实例化
实例化方式 |
作用 |
顺序容器 |
关联容器 |
容器适配器 |
C < T> c |
默认构造 |
√ |
√ |
√ |
C c(c1) |
复制构造 |
√ |
√ |
√ |
C c(it_b,it_e) |
范围构造 |
√ |
√ |
√ |
C c(n,t) |
填充构造 |
√ |
× |
× |
C c(n) |
初始化大小 |
√ |
× |
× |
2.2 重载运算符
运算符 |
作用 |
顺序容器 |
关联容器 |
容器适配器 |
= |
赋值 |
√ |
√ |
√ |
== |
比较 |
√ |
√ |
√ |
< |
小于 |
√ |
√ |
√ |
2.3 迭代器
迭代器 |
作用 |
顺序容器 |
关联容器 |
容器适配器 |
c.begin() |
头迭代器 |
√ |
√ |
× |
c.end() |
尾迭代器 |
√ |
√ |
× |
c.rbegin() |
反向头迭代器 |
√ |
√ |
× |
c.rend() |
反向尾迭代器 |
√ |
√ |
× |
2.4 大小
迭代器 |
作用 |
顺序容器 |
关联容器 |
容器适配器 |
c.size() |
大小 |
√ |
√ |
√ |
c.max_size() |
最大大小 |
√ |
√ |
× |
c.empty() |
判空 |
√ |
√ |
√ |
2.5 插入
函数 |
返回值 |
作用 |
顺序容器 |
关联容器 |
容器适配器 |
c.insert(p,t) |
iterator |
插入一个元素 |
√ |
× |
× |
c.insert(p,n,t) |
void |
插入n个连续元素 |
√ |
× |
× |
c.insert(p,it_b,it_e) |
void |
插入范围元素 |
√ |
× |
× |
c.insert(t) |
iterator/pair<iterator,bool> |
插入元素 |
× |
√ |
× |
c.insert(it_b,it_e) |
void |
插入范围元素 |
× |
√ |
× |
2.6 删除
函数 |
返回值 |
作用 |
顺序容器 |
关联容器 |
容器适配器 |
c.erase§ |
iterator |
删除指定位置元素(注意返回值是iterator) |
√ |
× |
× |
c.erase(p,q) |
iterator |
删除指定[p,q)范围连续元素(注意返回值是iterator) |
对 |
× |
× |
c.erase(k) |
size_type |
删除指定键值的元素 |
× |
√ |
× |
c.erase§ |
void |
删除指定位置元素(注意返回值是void) |
× |
√ |
× |
c.erase(p,q) |
void |
删除指定[p,q)范围连续元素(注意返回值是void) |
× |
√ |
× |
c.clear() |
void |
删除所有元素 |
√ |
√ |
× |
3、容器的特有操作
3.1 顺序容器特有函数
(1)访问函数
![在这里插入图片描述](https://img-blog.csdnimg.cn/160245c177cc449f987ce249bb1bc776.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6L2v6L2va2s=,size_20,color_FFFFFF,t_70,g_se,x_16)
(2)赋值/扩展
![在这里插入图片描述](https://img-blog.csdnimg.cn/a9201319e6084401b4724353d5be04cf.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6L2v6L2va2s=,size_20,color_FFFFFF,t_70,g_se,x_16)
3.2 关联容器特有查找函数
![在这里插入图片描述](https://img-blog.csdnimg.cn/c7fbcba4f8d9492c862bb599863b939f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6L2v6L2va2s=,size_20,color_FFFFFF,t_70,g_se,x_16)
3.3 容器适配器特有函数
![在这里插入图片描述](https://img-blog.csdnimg.cn/5e3014a5c3754e0e83eba1187764d2d5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6L2v6L2va2s=,size_20,color_FFFFFF,t_70,g_se,x_16)
容器适配器不支持迭代器
3.4 list特有函数
截取splice
删除remove
去重unique
合并merge
排序reverse
反转sort
4、其他
4.1 字符串
![在这里插入图片描述](https://img-blog.csdnimg.cn/4c70d0efb7f548b28909121d3ceb590e.png)
4.2 C++11增加容器
![在这里插入图片描述](https://img-blog.csdnimg.cn/7e3f2547ce7247daa31702c565cb1283.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/e3e0eaf2307949d1b96d50a5c1997826.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4580a01bdf9e4a838679eb9eb52598fd.png)
4.3 list测试
(1)list相关
#include <iostream>
#include <list>
#include <vector>
using namespace std;