其优先队列跟队列是一样的,只能从队尾插入元素,从队头删除元素。
所以对头往往是比较大的元素,导致出队时,先把最大的那个元素输出。(从大到小)顺序输出
STL中的使用方法:
q.qush(a):把a元素放入队列q中
q.pop():删除队列中的元素
q.top():取栈顶的元素
q.size():队列q中元素的个数
q.empty():队列中是否为空
头文件:#include <queue>
优先队列的声明:
①:priority_queue<int> q; 定义了优先队列q(注意:其输出是按元素从大到小的顺序输出)
②复杂的定义声明:
priority_queue<int, vector<int>, cmp>q;
struct cmp{
bool operator()(int x, int y){
return x>y;
}
}
priority_queue<int, vector<int>, greater<int> >q;(内置由大到小输出)
③元素类型是结构体(在结构体中重载 "<" )
//定义结构体
struct Node{
int a;
int b;
bool operator < (Node a, Node b)
{
//从按小到大排列
return a.a>b.a;
}
}
priority_queue<Node>q;
后面会持续更新