优先队列C++与STL入门-刘汝佳

为了加深下印象,想一遍,方便下次查。 

优先队列是一种抽象数据类型,先出队的不同于显出队列,而是队列中优先级最高的元素现出。(类似于“急诊病人插队”)

STL的优先队列在<queue>头文件中,用“priority_queue<int > pq”来声明,这个pq是一个“越小的整数优先级越低的优先队列”。

注意:由于出队的元素并不是最先进队的元素,出队的方式由queue的front()改为了top() 即优先级最高的先走

自定义类型也可以组成优先队列,必须给每个元素定义一个优先级,这个优先级并不一定是个数字,能比较大小即可。类似于SORT只要元素定义了“小于”运算符,就可以使用优先队列。 

也可以按照需求自定义比较优先级,比如: 整数也越大优先级越小“

定义一个结构体cmp,重载”*()“运算符,使其”看上去像个函数“,然后用priority_queue<int ,vector<int >, cmp >pq的方式定义。

struct cmp
{
    bool operator() (const int a,const int b) const
    {
        return a>b;
    }
};
 下面为越小的整数优先级越大的优先队列

priority_queue <int ,vector<int > ,greater <int > >pq
最后两个>不要写在一起
例题:

  UVA 136 Ugly Number

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值