STL学习系列七:优先级队列priority_queue容器

时间:2021-05-05 17:36:42

1.简介

  • 最大值优先级队列、最小值优先级队列
  • 优先级队列适配器 STL priority_queue
  • 用来开发一些特殊的应用,请对stl的类库,多做扩展性学习

  如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列 这种数据结构。 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一个新元素 (3)删除 一般情况下,查找操作用来搜索优先权最大的元素,删除操作用来删除该元素 。对于优先权相同的元素,可按先进先出次序处理或按任意优先权进行。

这里给个例子:

STL学习系列七:优先级队列priority_queue容器
#include<iostream>
#include <algorithm>
#include<functional>
#include <queue>
using namespace std;
void objPlay()
{

    priority_queue<int> p1; //默认是 最大值优先级队列 
    //priority_queue<int, vector<int>, less<int> > p1; //相当于这样写
    priority_queue<int, vector<int>, greater<int> > p2; //最小值优先级队列

    p1.push(33);
    p1.push(11);
    p1.push(55);
    p1.push(22);
    cout << "测试 最小值优先级队列" << endl;
    cout << "队列大小" << p1.size() << endl;
    cout << "队头" << p1.top() << endl;

    while (p1.size() > 0)
    {
        cout << p1.top() << " ";
        p1.pop();
    }

    cout << endl;
    cout << "**************************" << endl;
    
    p2.push(33);
    p2.push(11);
    p2.push(55);
    p2.push(22);
    cout << "测试 最小值优先级队列" << endl;
    cout << "队列大小" << p2.size() << endl;
    cout << "队头" << p2.top() << endl;
    while (p2.size() > 0)
    {
        cout << p2.top() << " ";
        p2.pop();

    }
    cout << endl;
}



int main()
{
    objPlay();

    system("pause");
    return 0;
}
转载自:http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_stl_007.html