优先队列格式

1.定义

标准的写法:

priority_queue<int,vector<int>,grater<int> > pq;
  • priority_queue<Type, Container, Functional>

  • 其中, Type 为数据类型. Container 为保存数据的容器. Functional 为元素比较的方式.

当然如果没有特殊要求可以写为:

priority_queue<int> pq;

个人感觉标准的比较好。

2.排序方式

优先队列和一般的排序刚好反了。

一般排序默认是从小到大,优先队列是从大到小(即大顶堆)。

如果想用小顶堆可以这样写:

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

3.自定义排序

如果要对一个结构体使用优先队列

struct Node{
    int x,y;
};

可以这样写:

#include<bits/stdc++.h>
using namespace std;
struct Node{
    int x,y;
    Node(int a=0, int b=0):
        x(a), y(b) {}
};

struct cmp{
    bool operator()(const Node& a,const Node& b){
        return a.x>=b.x;                //这里是大的在前,结果就是一个小顶堆,
                                        //和正常排序刚好相反
    }
};

int main(){
    priority_queue<Node, vector<Node>, cmp>p;


    return 0;
}

注意这里自定义的比较函数用的是结构体,或者类也可以。

参考博客:

优先队列(priority_queue)总结-CSDN博客

【原创】优先队列 priority_queue 详解-CSDN博客

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值