priority_queue的用法
#include<iostream> #include<queue> using namespace std; typedef long long LL; typedef pair<int, int> P; struct node{ int x,y; node(){} node(int cx,int cy):x(cx),y(cy){} friend bool operator<(const node& a,const node& b) { return a.x > b.x; //由小到大 //反之, a.x < b.x //由大到小 } void out() { cout<<"("<<x<<","<<y<<")"<<endl; } }; void test_1() { priority_queue<LL,vector<LL>,greater<LL> > que;//由小到大出队 que.push(1); que.push(5); que.push(3); while(!que.empty()) { LL e=que.top();que.pop(); cout<<e<<endl; } } void test_2() { priority_queue<LL> que;//由大到小出队 que.push(1); que.push(5); que.push(3); while(!que.empty()) { LL e=que.top();que.pop(); cout<<e<<endl; } } void test_3() { priority_queue<P,vector<P>,greater<P> > que;//按first的值由小到大出队 //同理 priority_queue<P> 则结果按first的值由大到小出队 que.push(P(3,5)); que.push(P(1,3)); que.push(P(2,6)); while(!que.empty()) { P pr=que.top();que.pop(); cout<<pr.first<<" "<<pr.second<<endl; } } void test_4() { priority_queue<node> que; que.push(node(3,5)); que.push(node(1,3)); que.push(node(2,6)); while(!que.empty()) { node e=que.top();que.pop(); e.out(); } } int main() { test_4(); return 0; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步