admin管理员组

文章数量:1624346

priority_queue又称为优先队列。
1.priority_queue的定义
要使用优先队列,应先添加头文件#include<queue>.
priority_queue<typename>name;
2.priority_queue容器内元素的访问
优先队列没有front()函数,back()函数,只能通过top()函数来访问队首元素(也可以称为堆顶元素),
也就是优先级最高的元素。
3.priority_queue常用函数实例解析
(1)push()
push(x)将令x入队。
(2)top()
top()可以获得队首元素。
(3)pop()
pop()令队首元素出列。
(4)empty()检测优先队列是否为空,返回true则空,返回false则非空。
(5)size()
size()返回优先队列内元素的个数。
4.priority_queue内元素优先级的设置
(1)基本数据类型的优先级设置
下列两种优先队列的定义是等价的(注意最后两个>之间有一个空格)
priority_queue<int>q;
priority_queue<int,vector<int>,greater<int>>q;
可以发现,第二种定义方式的尖括号内多出了两个参数:一个是vector<int>,另一个是less<int>.其中
vector<int>填写的是来承载底层数据结构堆(heap)的容器,如果第一个参数是double型或char型,
则此处只需要填写vector<double>或vector<char>;而第三个参数less<int>则是对第一个参数的比较类,
less<int>表示数字大的优先级越大,而greater<int>表示数字小的优先级越大。
如果想让优先队列总把最小的元素放在队首,只需进行如下定义:
priority_queue<int,vector<int>,greater<int>>q;

本文标签: 笔记stlpriorityqueue