没有找到priority_queue里存放pair不用typedef的方法...大概第一次觉得这个有用吧...
优先队列里和sort函数对pair 的默认排序是first从小到大,second从小到大,可以自定义cmp比较函数。
测试代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <stdio.h> #include <string.h> #include <queue> #include <vector> #include <iostream> using namespace std; int main() { int t; while (cin >> t) { typedef pair< int , int >pa; priority_queue<pa, vector<pa>, greater<pa> >que; while (t--) { int a, b; cin >> a >> b; pa pairr = make_pair(a, b); que.push(pairr); } cout << "output-----------\n" ; while (!que.empty()) { pa pairr = que.top(); cout << pairr.first << " " << pairr.second << endl; que.pop(); } cout << "==========\n" ; } return 0; } |
测试代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <stdio.h> #include <string.h> #include <queue> #include <vector> #include <algorithm> #include <iostream> using namespace std; typedef pair< int , int >pa; bool cmp(pa a, pa b) { if (a.second != b.second) return a.second > b.second; else return a.first > b.first; } int main() { int t; while (cin >> t) { pa pairs[10]; for ( int i=0; i<t; ++i) { int a, b; cin >> a >> b; pairs[i] = make_pair(a, b); } cout << "output-----------\n" ; sort(pairs, pairs+t); for ( int i=0; i<t; ++i) { cout << pairs[i].first << " " << pairs[i].second << endl; } cout << "==========\n" ; cout << "output-----------\n" ; sort(pairs, pairs+t, cmp); for ( int i=0; i<t; ++i) { cout << pairs[i].first << " " << pairs[i].second << endl; } cout << "==========\n" ; } return 0; } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步