priority_queue 优先队列详解

一、简单介绍

p r i o r i t y _ q u e u e priority\_queue priority_queue 是一个容器适配器, 默认的底层实现的容器是$std::vector\ $ ,主要实现的操作是应用堆(二叉树)操作实现的。

p r i o r i t y _ q u e u e priority\_queue priority_queue类将对其元素进行排序,以便最大的元素始终位于顶部位置。 它支持元素的插入以及顶部元素的检查和删除。 可以在脑海中将其类比为按年龄、身高或其他标准排队的人。

二、定义与使用
  • 默认构造方式

    • priority_queue();
      priority_queue <int> q1;  //默认情况,队列的实现基于vector容器
      
  • 指定底层实现方式

    • explicit priority_queue(const Traits& _comp); 
      //explicit关键词主要用于阻止某些类型的隐式换成一次性构造
      //用于定义比较的方式
      priority_queue <int, vector<int>, greater<int> > q3;
      
  • 拷贝构造

    • priority_queue(const priority_queue& right);
      priority_queue <int> q4( q1 );
      
  • 拷贝其他类型的指定区域的元素

    • template <class InputIterator>
      priority_queue(InputIterator first, InputIterator last);
      
      priority_queue <int> q5( v5.begin( ), v5.begin( ) + 2 );
      //进阶 设置排序方式
      template <class InputIterator>
      priority_queue(InputIterator first, InputIterator last, const Traits& _comp);
      
三、遍历方式

s t d : : p r i o r i t y _ q u e u e std::priority\_queue std::priority_queue 不提供遍历内部元素的标准方法。因为它是一个队列的数据结构($queue\ $),只可以访问、添加或删除其顶部的元素(最大值或最小值,取决于优先队列的排序方式)

四、相关函数
  • empty 函数

    • bool empty() const//如果 priority_queue 为空,则为 true;如果 priority_queue 不为空,则为 false
      
  • pop函数

    • void pop();
      //从顶部位置移除 priority_queue 的最大元素。
      
  • push函数

    • void push(const Type &val);
      //基于来自 operator< 的元素的优先级将元素添加到优先级队列。
      
  • size 函数

    • size_type size() const;
      //返回 priority_queue 中的元素数量
      
  • top函数

    • const_reference top() const;
      //返回对 priority_queue 顶部的最大元素的常量引用
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值