c++STL库中的priority_queue如何使用
1、该容器需要使用的头文件:#include <queue>
2、简单的定义方式:priority_queue <int> g ;这通常形成大顶堆。
3、常用方法:priority_queue::top() 返回堆顶部的元素的值priority_queue::push() 将一个元素压入优先队列中priority_queue::pop() 删除优先队列第一个元素
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;}
5、输出结果:The priority queue gquiz is : 30 20 10 5 1gquiz.size() : 5gquiz.top() : 30gquiz.pop() : 20 10 5 1
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表达式来定义了比较函数。