引言
在优先队列中,元素被赋予优先级,当访问元素时,具有最高级优先级的元素先被访问。即优先队列具有最高级先出的行为特征。
基本操作
#include <queue> //优先队列在头文件
q.empty( ) //判断一个队列是否为空
q.pop( ) //删除队顶元素
q.push( ) //加入一个元素
q.size( ) //返回优先队列中拥有的元素个数
q.push( ) //加入一个元素
q.size( ) //返回优先队列中拥有的元素个数
q.top( ) //返回优先队列的队顶元素
时间复杂度
优先队列的时间复杂度为O(logn),n为队列中元素的个数,其存取都需要时间。
实战
#include<iostream>
#include<vector>
#include<queue>
#include<functional>
using namespace std;
priority_queue<int> q1;// 大的优先级高
priority_queue<int,vector<int>,greater<int>>q2; // 小的优先级高
struct cmp
{
bool operator()(int x,int y)
{
return x>y;//小的优先级高
}
};
priority_queue<int,vector<int>,cmp>q3;
struct node
{
int x,y;
friend bool operator < (node a, node b)
{
return a.x > b.x;//小的优先级高
}
};
priority_queue<node>q4;
int main()
{
//具体操作和队列类似
return 0;
}