优先队列 priority_queue

头文件:

#include<queue>

升序定义:

priority_queue<int,vector<int>,greater<int>>q;//从小到大

降序定义:

priority_queue<int,vector<int>,less<int>>q;//从大到小

比较方式默认less,优先队列是大根堆,队头元素最大。

主要函数:

  • q.empty()//判断优先队列容器q是否为空
  • q.size()//返回优先队列容器中实际元素个数
  • q.push(a)//元素a进队
  • q.top()//获取头元素
  • q.pop()//元素出队

大根堆:

int main()
{
    priority_queue<int>p;//系统默认从大到小
    p.push(1);
    p.push(2);
    p.push(3);
    p.push(4);
    p.push(4);
    for (int i = 0; i < 5; i++)
    {
        cout << p.top() << endl;//输出从大到小
        p.pop();
    }
    return 0;
}

小根堆:

int main()
{
    priority_queue<int, vector<int>, greater<int>>p;//定义小根堆
    p.push(5);
    p.push(4);
    p.push(3);
    p.push(2);
    p.push(1);
    for (int i = 0; i < 5; i++)
    {
        cout << p.top() << endl;//输出从小到大
        p.pop();
    }
    return 0;
}
原文地址:https://www.cnblogs.com/Uiney117/p/14814094.html