优先队列使用方法

前几天做哈夫曼的贪心,想自己模拟搞就是写不对

于是弄了个优先队列水过

干脆总结下


头文件:#include<queue>


一:使用的函数

 成员函数:

empty

true if the priority queue has no elements

pop

removes the top element of a priority queue

push

adds an element to the end of the priority queue

size

returns the number of items in the priority queue

top

returns the top element of the priority queue

常用的也是这么几个

使用方法:

判断是否为空:


if (q.empty()) ...
 


弹出元素:


q.pop();


插入元素:

q.push(x);
 

其中x必须是q所申明的优先队列的元素类型


清除原队列(尤其是多组数据的时候记得注意):


while(!q.empty()) q.pop();



二:从大到小排序


priority_queue<int> q;


其中<int>是变量的类型,可以任意类型。

q是queue队列名称


三:从小到大排序


priority_queue<int,vector<int>,greater<int> > q;




四:自定义排序

多级变量排序的时候需要自定义结构体变量

struct node{

      int x,y;

      friend bool operator < (node n1,node n2){

           if (n1.x!=n2.x) return n1.x<n1.x;

           return n1.y<n2.y;

    }

}

priority_queue<node> q;




从上面的小于号的重载可以看得出来,node中是以x为第一级排序,以y为第二级排序。升序还是降序呢?

大家自己去做试验吧!

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-26 14:50
人力小鱼姐:有后面墨迹那两句的时间问题早回答完了
点赞 评论 收藏
分享
矫健的闭门羹烹饪师又熬夜了:本人双非本,在鹅厂测开实习,你这个简历上写的这两个项目的技术栈都差不多,能够让面试官去延伸去问的八股除了redis就再没啥了,建议项目这边可以再改改,然后专业技能那块的话,感觉linux和测试工具可以分开写,毕竟不是干一件事的,反正没实习的基础上面试就深挖项目和八股,好好卷吧
点赞 评论 收藏
分享
牛客928043833号:在他心里你已经是他的员工了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务