STL容器主要有序列式容器和关联式容器以及一些衍生而来容器配接器
序列式容器:vector、deque、list
关联式容器:set、map
常见配接器:stack、queue
下面分别对其进行介绍
一. vector
1. 特点
(1) 数组的升级版,可以动态管理内存。当容量不足时,会开辟一个新的空间,将数据拷贝过去,再释放原空间。
(2) 当删除元素时,不会释放对应的空间,所以向量容器的容量(capacity)一般大于向量容器的大小(size);
(3) 对于删除或插入操作,执行效率不高,越靠后插入或删除执行效率越高;
(4) 高效的随机访问的容器,适用于插入和删除操作较少的场景。
2.创建对象
#include<vector>
vector<int>v //默认创建,此时无法使用索引插入元素
vector<int> v(10) //指定大小创建,默认初始化为0
vector<int> v(10,2) //创建的同时初始化(十个元素,值都为2)
vector<int> v{1,3,5,7,9} //可以随意指定元素个数及元素的值
3. 常用接口
v.capacity() //查询容器容量
v.size() //查询容器内元素个数
v.push_back(5) //在尾部插入元素
v.pop_back() //删除尾部元素
v[i] //注意下标不可以越界
v.front() //获取第一个元素
v.end() //获取最后一个元素
v.begin() //返回容器头部迭代器
v.end() //返回容器尾部迭代器
v.insert(pos,num) //在指定位置插入元素
v.insert(pos,n,num) //在指定位置插入n个元素num
reverse(iter1,iter2) //将两个迭代器间的元素反转
二. deque
1. 特点
具有分段数组和索引数组,其中分段数组用来存储数据,索引数组用来存储每个分段的首部地址。支持下标访问,与vector相比支持快速的两端的插入和删除,同样存在中间位置插入删除较为复杂的问题。
2. 创建对象
#include<deque>
deque<int> dq //默认创建,此时无法进行下标相关的操作
deque<int> dq(10) //指定对象的大小(元素数量)
3. 常用接口
dp[i] //返回第i个元素
dq.front() //返回第一个元素
dp.back() //返回最后一个元素
dp.begin() //返回首部迭代器
dp.end() //返回尾部迭代器
dp.push_back(5) //尾部插入元素
dp.push_front(5 ) //首部插入元素
dp.insert(pos,nums) //在pos处插入元素
三. List
1.特点
2.创建
#include<list>
deque<int> l //默认创建,此时无法进行下标相关的操作
deque<int> l(10) //指定对象的大小(元素数量)
3.常用接口
l.front() //返回第一个元素
l.back() //返回最后一个元素
l.begin() //返回首部迭代器
l.end() //返回尾部迭代器
l.push_back(int*) //尾部插入元素
l.push_front(int*) //首部插入元素
l.insert(pos,int*) //在pos处插入元素