admin管理员组

文章数量:1624334

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

本文标签: 声明priorityqueue