日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

用法 stl_【c++】STL里的priority_queue用法总结

發布時間:2025/3/15 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用法 stl_【c++】STL里的priority_queue用法总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/xiaoquantouer/article/details/52015928


1、頭文件
#include<queue>
2、定義
priority_queue<int> p;
3、優先輸出大數據
priority_queue<Type, Container, Functional>
Type為數據類型, Container為保存數據的容器,Functional為元素比較方式。
如果不寫后兩個參數,那么容器默認用的是vector,比較方式默認用operator<,也就是優先隊列是大頂堆,隊頭元素最大。
例如:

#include<iostream> #include<queue>using namespace std;int main(){priority_queue<int> p;p.push(1);p.push(2);p.push(8);p.push(5);p.push(43);for(int i=0;i<5;i++){cout<<p.top()<<endl;p.pop();}return 0;}


輸出:

4、優先輸出小數據
方法一:
priority_queue<int, vector<int>, greater<int> > p;
例如:

#include<iostream>#include<queue>using namespace std;int main(){priority_queue<int, vector<int>, greater<int> >p;p.push(1);p.push(2);p.push(8);p.push(5);p.push(43);for(int i=0;i<5;i++){cout<<p.top()<<endl;p.pop();}return 0;}


輸出:


方法二:自定義優先級,重載默認的 < 符號
例子:

#include<iostream>#include<queue>#include<cstdlib>using namespace std;struct Node{int x,y;Node(int a=0, int b=0):x(a), y(b) {}};struct cmp{bool operator()(Node a, Node b){if(a.x == b.x) return a.y>b.y;return a.x>b.x;}};int main(){priority_queue<Node, vector<Node>, cmp>p;for(int i=0; i<10; ++i)p.push(Node(rand(), rand()));while(!p.empty()){cout<<p.top().x<<' '<<p.top().y<<endl;p.pop();}//while//getchar();return 0; }


輸出:

總結

以上是生活随笔為你收集整理的用法 stl_【c++】STL里的priority_queue用法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。