普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出的行为特征。
- 操作函数
- q.top(); //返回队列顶部的元素值,普通队列为q.front();
- q.pop(); //删除队列顶部的元素值
- q.push(); //把x元素插入到优先级队
- q.empty(); //判断队列是否为空。为空返回true,否则返回false
优先队列的定义
1.结构体内定义
struct node
{
int x, y;
friend bool operator < (node a, node b)
{
return a.x > b.x;//结构体中,x小的优先级高
}
};
priority_queue<node>q1;
2.定义cmp函数
struct cmp1
{
bool operator ()(int x, int y)
{
return x > y;//小的优先级高
}
};
priority_queue<int, vector<int>, cmp1>q2;
3.普通定义
priority_queue<int>q;
//通过操作,按照元素从大到小的顺序出队