C++ 优先级队列 priority_queue

Posted patrolli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 优先级队列 priority_queue相关的知识,希望对你有一定的参考价值。

优先级队列(priority_queue)是一种容器适配器(container adaptor)。它要求容器具有front、push_back、pop_back等操作,并且容器具有随机访问的能力,故优先队列可以基于vector或者deque构造。

queue和prioruty_queue都被定义在queue头文件中。

几种定义形式:

using namespace std;
int myint[4] = 10, 60, 50, 20;
priority_queue<int> first;  //创建一个空的优先队列
priority_queue<int> second(myint, myint+4); //second包含四个int,其中60在队列的顶部(默认是越小的优先级越低,所以最大的60在top
priority_queue<int, vector<int>, greater<int> > third(myint, myint+4); //third同样包含四个int,但是它的优先级是越大优先级越低,所以最小的10在top

  

也可以自定义比较优先级,其操作为:

//定义比较的类或结构体,并重载()运算符
class mycmp

  bool reverse;
public:
  mycmp(const bool& revparam=false)reverse = revparam;
  bool operator()(const int& lhs, const int& rhs) const
  
    if(reverse) return (lhs > rhs);
    else return (lhs < rhs);

//使用自己定义的比较优先级
typedef priority_queue<int, vector<int>, mycmp> mypq_type;
mypq_type fourth;
mypq_type fifth(mycmp(true));

  

成员函数有:

empty  Test whether container is empty
size  Return size
top  Access top element
push  Insert element 
emplace   Construct and insert element
pop  Remove top element
swap   Swap contents

 

 再添加一个博客链接,讲得比较详细:https://blog.csdn.net/c20182030/article/details/70757660

以上是关于C++ 优先级队列 priority_queue的主要内容,如果未能解决你的问题,请参考以下文章

C++ 优先级队列 priority_queue

C++——优先级队列(priority_queue)的使用及实现

c++优先队列(priority_queue)用法详解

C++优先队列(priority_queue)

C++ STL:优先级队列priority_queue的使用方法和模拟实现

C++:STL——栈队列和优先级队列的模拟实现