栈
栈的声明
#include<stack>
stack<int>a;
栈的性质:先入后出(相当于一个桶,只能拿走最上面的那个元素)
栈的内置函数:
#include<stack>
stack<int>a;
a.push(x); //将x压入栈a中
a.top(); //返回栈顶元素
a.pop(); //弹出栈顶元素
a.size(); //测量栈的大小(元素个数)
a.empty(); //判断是否为空栈
a.swap(); //交换内容
队列
队列的声明
#include<queue>
queue<int>q;
队列的性质:先入先出(相当于排队,只能到最后面排队,最前面的处理完事情就走)
队列的内置函数:
#include<queue>
queue<int>q;
q.push(x); //将x压入队列
q.front(); //访问队列最前端元素
q.back(); //访问队列最后一个元素
q.empty(); //判断是否为空队列
q.size(); //返回队列大小
q.pop(); //将最前端元素压出
q.swap(); //交换元素
特殊队列
优先队列
与队列性质相似,但其最先返回的是优先级较高的元素(可以看作,每进入一个元素到队列,其都会排序,优先级高的在前面,低的在后面)
####优先队列的声明
#include<queue>
priority_queue<int>pq; //整数越小,优先级越低的优先队列
priority_queue<int,vector<int>,greater<int> >;//(注意最后两个">"之间有一个空格)升序队列
priority_queue<int,vector<int>,less<int> >;//降序序列
可以定义一个结构体,重载"()"运算符,从而达到自定义优先级的目的
如:
struct cmp
{
bool operator ()(const int a,const int b)
{
return a%10<b%10;
}
};
priority_queue<int,vector<int>,cmp>//个位数越小优先级越高