admin管理员组文章数量:1623791
优先队列 Heap
priority_queue<int, vector<int>, less<int>>s;//less表示按照递减(从大到小)的顺序插入元素
priority_queue<int, vector<int>, greater<int>>s;//greater表示按照递增(从小到大)的顺序插入元素
不写第三个参数或者写成less都是大根堆。greater是小根堆。
在C++中优先队列默认的是大根堆,如果用小根堆则加入
greater.
定义方式
priority_queue<ListNode * , vector<ListNode *> ,Cmp> heap;
构造小根堆(重载)
1. 自定义结构重载
struct Cmp
{
bool operator()(ListNode * a, ListNode * b)
{
return a->val > b ->val; //小顶堆,,改为 < 是大顶堆
}
};
priority_queue<ListNode * , vector<ListNode *> ,Cmp> heap;
2. 重载 < >
如果是小根堆,就要重载 >
如果是大跟读, 就要重载 <
struct Node{
int x,y,z;
friend bool operator > (const Node& a,const Node& b){
return a.x > b.x; //greater,小顶堆
}
friend bool operator < (const Node& a,const Node& b){
return a.x < b.x;//less,大顶堆
}
}
配套例题
例题
本文标签: 算法常用priorityqueuestl
版权声明:本文标题:【算法常用STL】-> priority_queue 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728896277a1178450.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论