C++STL模板库适配器之优先级队列

适配器之优先级队列

一丶优先级队列简介(priority_queue)

优先级队列.不采用严格的先进先出的顺序.而是按照优先级. 给定某一时刻位于队列头的元素.
如果两个元素有相同的优先级.他们他们在队列中的顺序就是先进先出.底层是vector容器支持.可以使用deque,不能使用list.因为优先级队列要支持对元素的随机访问.便于排序.

二丶优先级队列代码演示

优先级队列方法跟队列方法一致.

1.优先级队列代码以及使用简介

优先级队列怎么说那.其实就是跟队列一样.只不过内部进行了排序.(排序是你自己制定的按照什么方式排序) 然后放到头部.

  • 模板申明带3个参数:priority_queue<Type, Container, Functional>,其中Type 为数据类型,Container为保存数据的容器,Functional 为元素比较方式。
    第一种方式.不指定.默认跟队列一样.先进先出.
#include <iostream>
#include <queue>
using namespace std;
int main()
{
  priority_queue<int> q;
  q.push(7);
  q.push(9);
  q.push(6);
  while (!q.empty()) {
    cout << q.top() << endl;
    q.pop();
  }
  system("pause");
  return 0;
}

程序输出9 7 6

第二种方式. 指定排序方式,可以指定大小

#include <iostream>
#include <queue>
using namespace std;
int main()
{
 // priority_queue<int,vector<int>,less<int>> q;  less()比较方式按照大的优先级方式. greater是小的
  priority_queue<int, vector<int>, greater<int>> q;

  q.push(7);
  q.push(9);
  q.push(6);
  while (!q.empty()) {
    cout << q.top() << endl;
    q.pop();
  }
  system("pause");
  return 0;
}

程序输出 6 7 9

参考博客: 博客链接

原文地址:https://www.cnblogs.com/iBinary/p/9954663.html