底层容器常用共同操作
增加元素:iterator insert()
删除元素:iterator erase()
容器元素个数:int size()
容器是否为空:bool empty()
清空容器元素:clear()
1,2容器元素互换:1.swap(2)
序列式容器
特点:
共同操作:
c.resize() //重新定义容器c长度
vector
定义:vector<T> v;
1.构造函数:
vector(); //创建一个空的vector
vector(int n) //创建一个元素个数为n的vector
vector(int n,0) //创建一个元素为n个0的vector
vector(const vector& v) //拷贝构造
vector(v2.begin(),v2.end())//
2.元素操作:
v.push_back(T& t) //尾插元素
v.pop_back() //尾删元素
v.at() //支持随机访问元素
list
定义:list<T> l;
1.构造函数:
list() //创建一个空的list
list(int n) //创建一个含n个0的链表
list(int n,m) //创建一个含n个m的链表
list(const list& l2) //拷贝构造,创建l2的copy链表
list(l2.begin(),l2.end()) //创建包含l2部分区间的copy链表
2.元素操作:
l.push_back(T& t) //尾插元素
l.push_front(T& t) //头插元素
l.pop_back() //尾删元素
l.pop_front() //头删元素
3.其他操作:
l.merge() //合并两个链表,默认升序排列
l.reverse() //反转链表
l.remove() //删除链表中匹配值的元素,匹配元素全部删除
l.remove_if() //删除满足条件的元素,遍历一次链表
l.sort() //覆盖algorithm::sort(),默认升序
l.unique() //删除相邻重复元素
deque
定义:deque<T> d;
1.构造函数:
deque() //创建一个空的deque
deque(int n) //创建一个元素个数为n的deque
deque(int n,m) //创建一个元素为n个m的deque
deque(const deque& d2) //拷贝构造,创建d2的copy队列
deque(d2.begin(),d2.end()) //创建以[begin,end)为区间的队列
2.元素操作:
d.push_back(T& t) //尾插元素
d.push_front(T& t) //头插元素
d.pop_back() //尾删元素
d.pop_front() //头删元素
d.at() //支持随机访问元素
关联式容器
特点:
共同操作:
count()
find()
map
定义:map<T1,T2> m;
1.构造函数:
map(); //创建一个空的map
map(const map& m); //拷贝构造
map(m2.begin(),m2.end()) //区间构造
//还有其他两种构造
2.元素操作:
m[key]=value //直接插入元素
m.insert(pair<T1,T2>(key,value)) //pair对象插入元素
m.insert(map<T1,T2>::value_type(key,value)) //value_type对象插入
m[key] //下标直接获取元素
set
定义:set<int,less<int> > s;
less<int> //是一个标准类,用于形成升序排列函数对象
greater<int> //用于形成降序排列函数对象
1.构造函数:
set()//
set()//拷贝构造
set()//区间构造
2.元素操作:
set_intersection() //求两个集合交集
set_union() //求两个集合并集
set_difference(s1,s2) //s2相对于s1的差集
set_difference(s2,s1) //s1相对于s2的差集
set_symmetric_difference() //上面两个差集的并集
容器适配器
特点
不提供clear接口
stack
默认使用deque为底层容器,也可以用vector, , list实现,构造出后进先出的数据结构,只能在一端进行数据操作
stack() //构造空的栈
empty() //判断栈是否为空
size() //返回栈中元素个数
top() //返回栈顶元素的引用
push() //压栈
pop() //出栈
queue
默认使用deque为底层容器,也可以用list实现,构造出先进先出的数据结构,一端插入另一端删除
queue() //构造空的队列
empty() //判断队列是否为空
size() //返回队列中元素个数
front() //返回队列头元素的引用
back() //返回队列尾元素的引用
push() //入队
pop() //出对
priority_queue
默认使用vector为底层容器,默认是大堆,可以通过随机访问迭代器访问
priority_queue() //构造空的优先队列
empty() //判断队列是否为空
size() //返回队列中元素个数
top() //返回优先队列中最大元素的引用(堆顶元素)
push() //向优先队列插入元素
pop() //删除堆顶元素