STL容器 -- Priority_Queue

核心:和队列相似,但优先队列中的 “下一个元素” 指的是 “优先级最高” 的元素.

头文件:#include<queue>

普通类型的构造方法:

priority_queue<int> maxQu;                     //构造一个包含 int 型元素的优先队列,默认优先级为 int 元素的值越大则优先级越高
priority_queue< int, vector<int>, greater<int> > minQu;     //构造一个包含 int 型元素的优先队列,优先级为 int 元素的值越小则优先级越高

除此之外,改变默认的优先级还可以自己写比较函数:

struct cmp {
    bool operator () (const int a, const int b) const {
        return a > b; // 值越小优先级越高,这里可以灵活的变通,比如“个位越小优先级越高" 则可以写成: reutn a % 10 > b % 10;
    }
};
priority_queue <int, vector<int>, cmp> minQu;

常用的操作:

priQu.size()     //返回优先队列内部的元素个数
priQu.empty()   //判断队列是否为空
priQu.push(elem) //将元素 elem 添加到优先队列
priQu.top()      //返回优先队列内优先级最高的那个元素, 如果同时存在多个, 则只返回其中一个
priQu.top()      //移除优先队列内优先级最高的那个元素

结构体类型的应用:

//优先队列的内部元素为结构体类型时,需要重载 '<' 运算符
struct NODE { //结构体的写法
    int x, y;
    bool operator < (const NODE& a) const { //1 级优先级为 x 的值越大优先级越高,2 级优先级为 b 越小优先级越高
        if(x == a.x) return y > a.y; // 当 1 级优先级无法判断时才考虑 2 级优先级
        return  x < a.x;
    }
};
priority_queue<NODE> ndQu;//结构体类型的优先队列的构造

 

转载于:https://www.cnblogs.com/Ash-ly/p/5874576.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值