zoukankan      html  css  js  c++  java
  • 优先队列

    优先队列是队列的一种,允许用户对队列中存储的元素设置优先级。按照数据的优先级来对队列中的数据进行动态的排序。每次的push和pop操作,队列都会动态的调整。

    所以我们无论按照什么顺序push一堆数据,最终在队列里总是top出最大的元素。

    1、标准库默认使用元素类型的<操作符来确定他们之间的优先关系。

    priority_queue<int> pq;

    2、数据越小,优先级越高

    priority_queue<int, vector<int>, greater<int> > q;

    priority_queue 对于基本类型的使用方法相对简单。他的模板声明带有三个参数:
    priority_queue<Type, Container, Functional>
    其中Type 为数据类型, Container 为保存数据的容器,Functional 为元素比较方式。
    Container 必须是用数组实现的容器,比如 vector, deque 但不能用 list.
    STL里面默认用的是 vector. 比较方式默认用 operator< , 所以如果你把后面俩个参数缺省的话,
    优先队列就是大顶堆,队头元素最大。

    3、自定义优先级,重载默认符号,重载默认的 < 符号。

  • 相关阅读:
    06C++11线程池
    05C++11生产者消费者模式2
    04C++11生产者消费者模式
    03智能指针之shared_ptr
    洛谷P1262+Tarjan缩点
    洛谷P1147 连续自然数和
    洛谷P1970 花匠
    接下来的一些操作
    树状数组 代码(洛谷为例)
    洛谷P1576 最小花费
  • 原文地址:https://www.cnblogs.com/YXY-1211/p/6869195.html
Copyright © 2011-2022 走看看