按照pair的第二关键字排序需要自定义,需要注意的是优先队列priority_queue的重载和vector等是相反的,即 vector中是从小到大,到了优先队列是从大到小。当然,cmp的写法也有些不同,请参考下面的写法。

比如下面的例子。

vector按照pair第二关键字从大到小,相同逻辑则优先队列认为从小到大。

typedef pair<int,int> PII;
//优先队列按照pair的第二关键字从小到大排序
struct cmp{bool operator()(PII a, PII b){return a.second > b.second;}};//vector按照pair的第二关键字从大到小
bool cmp1(PII a, PII b){return a.second>b.second;
}

使用时是这样的

//优先队列直接使用priority_queue<PII,vector<PII>,cmp > q;//vector需要排序sort(vec.begin(),vec.end(),cmp1);

测试代码与测试结果:

#include<bits/stdc++.h>using namespace std;const int Maxn=10000;typedef pair<int,int> PII;
//优先队列按照pair的第二关键字从小到大排序
struct cmp{bool operator()(PII a, PII b){return a.second > b.second;}};//vector按照pair的第二关键字从大到小
bool cmp1(PII a, PII b){return a.second>b.second;
}int main(){//  priority_queue<float,vector<float>, greater<float>> q; //小根堆
//  priority_queue<float> q;//默认大根堆   //优先队列按照pair第二关键字排序priority_queue<PII,vector<PII>,cmp > q;q.push({1, 10});q.push({4,9});q.push({3,8});//pop and print while(!q.empty()){cout<<q.top().first<<" "<<q.top().second<<endl;q.pop();}cout<<endl;//vector按pair第二关键字排序vector<PII> vec;vec.push_back({1, 10});vec.push_back({4,9});vec.push_back({3,8});sort(vec.begin(),vec.end(),cmp1);for(auto a:vec){cout<<a.first<<" "<<a.second<<endl;}cout<<endl;
}

优先队列如何按照pair 的第二关键字排序(对比vector按照pair第二关键字排序)相关推荐

  1. 超级列表框排序mysql,易语言超级列表框排序源码

    易语言超级列表框排序源码.版本 2 .支持库 iext .程序集 窗口程序集1 .程序集变量 集_中文, 文本型, , "0" .程序集变量 集_中文排序, 整数型, , &quo ...

  2. 找出最大和第二大的数PHP,2020-09-01 十大经典排序算法总结php为例

    排序算法说明 1 .排序的定义 对一序列对象根据某个关键字进行排序. 2.术语说明 稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面: 不稳定 :如果a原本在b的前面,而a=b,排序之后 ...

  3. 按单词的第二个字母在字母表中的顺序进行排序

    /*按第二个字母的升序排列,如果第二个字母相等,按第一字母的顺序排列冒泡排序* */var str = 'apple banana orange parent pear aap absolute po ...

  4. MySQL 学习笔记(1)— 创建/连接/选择/显示数据库(表) 查询单列(多列/所有列)/查询返回特定的行数 各种排序(单列/多列/降序/组合排序) 过滤数据

    本文是对之前学习 MySQL 的一个总结,使用思维导图的方式将涉及到的知识点罗列出来,一方面作为自己对于知识点的归纳,另一方面也便于日后查询. 在该篇文章中将对 MySQL 的基本使用.检索基本数据. ...

  5. 内排序及时间复杂度分析-插入排序选择排序交换排序归并排序分配和索引排序对比...

    基本概念 什么是排序? 排序 将序列中的记录按照排序码顺序排列起来 排序码域的值具有不减(或不增)的顺序 内排序 整个排序过程在内存中完成 给定一个序列 R = { r1, r2, ...,rn } ...

  6. android 二级列表拖动排序_Excel的数据透视表六种排序方法

    Excel的数据透视表排序不像表格中那样操作灵活,很多小伙伴对此不熟悉,本文系统讲解数据透视表的各种排序. 一.常规排序 二.组内排序 三.多关键字排序 四.手动拖动排序 五.手动输入排序 六.设置透 ...

  7. python选择排序从大到小_经典排序算法和Python详解之(一)选择排序和二元选择排序...

    本文源自微信公众号[Python编程和深度学习]原文链接:经典排序算法和Python详解之(一)选择排序和二元选择排序,欢迎扫码关注鸭! 扫它!扫它!扫它 排序算法是<数据结构与算法>中最 ...

  8. 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...

    掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...

  9. c++ 不插入重复元素但也不排序_面试时写不出排序算法?看这篇就够了

    小Hub领读: 本文主要详细讲述常见的八种排序算法的思想.实现以及复杂度.包括冒泡排序.快速排序.插入排序.希尔排序等等,文章讲解非常详细! 作者:静默虚空 https://juejin.im/pos ...

最新文章

  1. Anaconda中安装Orange3脚本-完整版
  2. Android — 使用 SharedPreferences 本地保存 key-value 数据
  3. 用python写一个简单的推荐系统 1
  4. C#——判断数列是否排序
  5. docker 添加端口映射_Docker三大核心概念之容器
  6. Eclipse更改默认字符集 设置UTF-8
  7. SAP Spartacus LayoutConfig的配置为何运行时不生效
  8. 使用 ADO.NET 的 NextResult 方法取得多个 Result Set
  9. 第二节:深入剖析Thread的五大方法、数据槽、内存栅栏
  10. php 串口通信例程,HAL库串口通信例程
  11. 王者荣耀显示聊天服务器异常,王者荣耀功能存在异常暂时关闭怎么回事 解决办法...
  12. Javascript 钩子机制——开会得出的结论
  13. ttk.treeview鼠标悬浮文字_电竞新选择,罗技G键盘、鼠标、耳机三件套给力体验...
  14. 改ip 银河麒麟_PK体系银河麒麟云桌面和云平台
  15. 神武3很遗憾未能链接服务器,12月8日神武3维护解读 wuli滔滔进驻新服!
  16. RESTful及其特点
  17. java 参数中含有… 是什么意思
  18. 46家中外知名企业面试题目
  19. SD卡pin引脚说明及PCB layout指导
  20. c语言屏幕输出函数相关题,C语言上机考试题目

热门文章

  1. Lucky7(hdu5768)
  2. ubuntu安装(owncloud-docker安装)
  3. 【读书笔记】iOS-NSString的length
  4. CentOS配置SSH单向无密码访问
  5. 自己写一个图片按钮(XAML)
  6. poj 1737男人八题之一 orz ltc
  7. 用分类映射的办法分类两条夹角为0.3度的直线
  8. python中matrix函数_使用python解线性矩阵方程(numpy中的matrix类)
  9. 【Paper】2017_Limit-Cycle-Based Decoupled Design of Circle Formation Control with Collision Avoidance
  10. STM32 电机教程 12 - BLDC 闭环电流控制