c++STL库中的priority_queue如何使用

2025-12-30 15:13:24

1、该容器需要使用的头文件:

#include <queue>

c++STL库中的priority_queue如何使用

2、简单的定义方式:

priority_queue <int> g ;

这通常形成大顶堆。

c++STL库中的priority_queue如何使用

3、常用方法:

priority_queue::top()   返回堆顶部的元素的值

priority_queue::push()  将一个元素压入优先队列中

priority_queue::pop()  删除优先队列第一个元素

c++STL库中的priority_queue如何使用

4、代码示例:

#include <iostream>

#include <queue>

  

using namespace std;

  

void showpq(priority_queue <int> gq)

{

    priority_queue <int> g = gq;

    while (!g.empty())

    {

        cout << '\t' << g.top();

        g.pop();

    }

    cout << '\n';

}

  

int main ()

{

    priority_queue <int> gquiz;

    gquiz.push(10);

    gquiz.push(30);

    gquiz.push(20);

    gquiz.push(5);

    gquiz.push(1);

  

    cout << "The priority queue gquiz is : ";

    showpq(gquiz);

  

    cout << "\ngquiz.size() : " << gquiz.size();

    cout << "\ngquiz.top() : " << gquiz.top();

  

  

    cout << "\ngquiz.pop() : ";

    gquiz.pop();

    showpq(gquiz);

  

    return 0;

}

c++STL库中的priority_queue如何使用

5、输出结果:

The priority queue gquiz is :     30    20    10    5    1 

gquiz.size() : 5 

gquiz.top() : 30 

gquiz.pop() :     20    10    5    1

c++STL库中的priority_queue如何使用

6、加入比较函数:定制属于自己的堆结构

定义

priority_queue<T, vector<T>, decltype(Compare)> openSet(Compare);

T是数据类型,vector<T>表示存储数据的序列,compare是比较函数

示例:

auto greater = []( ListNode* a, ListNode* b ) { return a->val > b->val; };

priority_queue <ListNode*, std::vector<ListNode *>, decltype(greater)> Q(greater);

这里使用了Lamda表达式来定义了比较函数。

c++STL库中的priority_queue如何使用

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢