c++ 优先队列 priority_queue
基本性质
优先队列与队列的差别在于优先队列不是按照入队的顺序出队,而是按照队列中元素的优先权顺序出队。头文件还是<queue>
。可以用priority_queue<int>que
来声明,这个que是一个“越小整数优先级越低的优先队列”。
基本操作
基本操作与队列相同,不过取队首元素从front()变成了top()。
que.top() // 取队首元素
que.back() // 取队尾元素
que.push(x)// 将元素x入队
que.pop() // 将队首元素出队
que.size() // 返回队列的长度(即队列中的元素个数)
que.empty()// 判断队列是否为空,若为空则返回1,否则返回0
当然我们可以自己定义优先级
struct node
{
int x;
int y;
friend bool operator<(node n1,node n2)
{
return n1.y>n2.y;
}
};
priority_queue<node>que;//这个优先队列是“当y值越大,优先级越低的优先队列”