stl容器:vector,deque,list,map/multimap,set
特殊容器:stack,queue,priority_queue
通用操作
size() 返回当前容器元素数量
empty() 判断容器是否为空
max_size() 返回容器能容纳的最大元素数量
与迭代器有关的操作
begin() 返回一个迭代器,指向第一个元素
end() 指向最后一个元素之后
rbegin() 指向逆向遍历的第一个元素
rend() 指向逆向遍历的最后一个元素之后
元素操作
insert(pos,e)
erase(beg,end)
clear() 移除所有元素
迭代器
双向,list set map
随机 vector deque string
vector模拟动态数组
包含头文件 <vector>
操作
效果
vector<T> c
产生空的vector
vector<T> c1(c2)
产生同类型的c1,并将复制c2的所有元素
vector<T> c(n)
利用类型T的默认构造函数和拷贝构造函数生成一个大小为n的vector
vector<T> c(n,e)
产生一个大小为n的vector,每个元素都是e
vector<T> c(beg,end)
产生一个vector,以区间[beg,end]为元素初值
~vector<T>()
销毁所有元素并释放内存。
操作
效果
c.size()
返回元素个数
c.empty()
判断容器是否为空
c.max_size()
返回元素最大可能数量(固定值)
c.capacity()
返回重新分配空间前可容纳的最大元素数量
c.reserve(n)
扩大容量为n
c1==c2
判断c1是否等于c2
c1!=c2
判断c1是否不等于c2
c1<c2
判断c1是否小于c2
c1>c2
判断c1是否大于c2
c1<=c2
判断c1是否大于等于c2
c1>=c2
判断c1是否小于等于c2
操作
效果
at(idx)
返回索引idx所标识的元素的引用,进行越界检查
operator [](idx)
返回索引idx所标识的元素的引用,不进行越界检查
front()
返回第一个元素的引用,不检查元素是否存在
back()
返回最后一个元素的引用,不检查元素是否存在
操作
效果
c.insert(pos,e)
在pos位置插入元素e的副本,并返回新元素位置
c.insert(pos,n,e)
在pos位置插入n个元素e的副本
c.insert(pos,beg,end)
在pos位置插入区间[beg;end]内所有元素的副本
c.push_back(e)
在尾部添加一个元素e的副本
操作
效果
c.pop_back()
移除最后一个元素但不返回最后一个元素
c.erase(pos)
删除pos位置的元素,返回下一个元素的位置
c.erase(beg,end)
删除区间[beg;end]内所有元素,返回下一个元素的位置
c.clear()
移除所有元素,清空容器
c.resize(num)
将元素数量改为num(增加的元素用defalut构造函数产生,多余的元素被删除)
c.resize(num,e)
将元素数量改为num(增加的元素是e的副本)
deque
模拟动态数组
包含头文件<deque>