优先队列(priority_queue)

优先队列(priority_queue),是一种被专门设计的容器,其第一个元素总是它所包含的最大的元素。

使第一个元素总是它所包含的优先级最高的元素,这种情况类似于堆,元素可以随时插入,只能检索优先级最高的元素。

例如,当优先队列中是int类型的数据时,则数值越大优先级越高。

Member functionsImplementation function
empty()判断优先队列是否为空
size()返回优先队列中的元素个数
top()获取优先队列中优先级最高的元素
push(x)将元素x插入到优先队列中
pop()将优先级最高的元素从队列中删除

 

优先队列的优先级重载

优先队列,可以存放数值,也可以存放其它数据类型(包括自定义数据类型)。该容器支持查询优先级最高的元素这一操作,而优先级的高低是可以自行定义的。

我们可以通过重载小于运算符bool operator <来实现。

比如整数,程序默认是数值较大的元素优先级较高,我们也可以定义数值较小的元素优先级较高。又比如下面的例子,在算法竞赛中经常出现,这里定义距离值较小的node优先级较高。

struct node {
    int dist ,loc;
    node(){}
    bool operator < (const node & a) const {
        return dist >a.dist;
    }
};
priority_queue <node> Q;

上述代码起到优先级重载的作用,我们仍然可以进行top()pop()等优美的操作。

 

 

转载于:https://www.cnblogs.com/upstart/p/6797030.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值