priority_queue 的声明

本文介绍了C++中的priority_queue,它基于堆数据结构并提供了特定操作。priority_queue包含在<queue>头文件中,其底层容器默认为vector,排序规则默认为less,用于创建小根堆。若要创建大根堆或处理自定义类型,需指定比较规则。
摘要由CSDN通过智能技术生成

priority_queue的使用,首先priority_queue是以堆的概念为基础的。所有的操作都是以堆为准。

相当于对堆这种数据结构做了一次包装,提供特定的操作。

首先看priority_queue的声明,priority_queue包含在#include <queue> 头文件中。使用前记得include。

声明如下:

从声明可以看出,priority_queue的低层容器默认是vector,排序规则默认是less, 即如果想声明一个大根堆,只需要传进来一个元素类型即可。

priority_queue<int> pq;
priority_queue<long> pq;

如果想声明一个小根堆,就需要传入新的比较规则,因为模板默认比较规则是第三个参数,所以即使不改变低层容器,在声明时也是需要写上的。

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

如果是自定义类型,就需要为自定义类型定义比较规则。

struct Node{
    int val;
    int x;
};

struct cmp{
    bool operator()(const Node& a, const Node& b){
        return a.val > b.val;
    }
};
priori
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值