栈:stack
#include <stack>
stack<int> s;
成员函数:
//判空求规模
s.empty();
s.size();
//数据访问
s.top();
//数据增删
s.push();
s.pop();
队列:queue
#include <queue>
queue<int> q;
成员函数:
//判空求规模
q.empty();
q.size();
//数据访问
q.front();
q.back();
//数据增减
q.push();
q.pop();
堆:priority_queue
#include<queue>
priority_queue<int> H; //大根堆
priority_queue<int,vector<int>,greater<int> > h; //小根堆,最后的两个“>”之间要有空格,vector不用单另开头文件。至于greater是什么意思,我并不知道……
成员函数:与栈完同
//判空求规模
h.empty();
h.size();
//数据访问
h.top();
//数据增删
h.push();
h.pop();
**注:若数据元素为结构体,则需重载<运算符。
双端队列:deque
#include <deque>
deque<int> d;
成员函数:
d.push_front(); //vector无
d.push_back();
d.pop_front();//vector无
d.pop_back();
//其他与vector几乎一致(就是以vector为原型创造的)
//vector无法在front处进行pop与push修改
#include <vector>
vector<int> c;
成员函数:
//判空判规模
c.empty(); //判断容器是否为空,若为空返回true,否则返回false
c.size(); //返回当前容器中实际存放元素的个数
//数据访问
c.at(index); //返回指定index位置处的元素
c.front(); //返回容器最开始单元数据的引用
c.back(); //返回容器最后一个数据的引用
c.begin(); //返回指向容器最开始位置数据的指针
c.end(); //返回指向容器最后一个数据单元的指针+1
//数据修改
c.push_back(elem); //在容器后端加入新元素
c.pop_back(); //删除容器最后位置处的元素
c.erase(p); //删除指针p指向位置的数据,返回下指向下一个数据位置的指针(迭代器)
c.erase(begin,end); //删除begin,end区间的数据,返回指向下一个数据位置的指针(迭代器)
c.clear(); //清除所有数据
c1.swap(c2); //交换两个容器中的数据
c.insert(p,elem); //在指针p指向的位置插入数据elem,返回指向elem位置的指针
c.insert(p,n,elem); //在位置p插入n个elem数据,无返回值
c.insert(p,begin,end); //在位置p插入在区间[begin,end)的数据,无返回值
//不常用
c.resize(); //重新设置vector的容量
c.max_size(); //返回容器的最大容量
c.reserve(); //同c.resize()
c.capacity(); //同c.size()
c.rbegin(); //将vector反转后的开始指针返回(其实就是原来的end-1)
c.rend(); //将vector反转后的结束指针返回(其实就是原来的begin-1)