鱼C论坛

 找回密码
 立即注册
查看: 1379|回复: 2

[已解决]pair存时间再进行排序会按照时间大小默认排好序吗?

[复制链接]
发表于 2023-10-10 17:46:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 pair<pair<int, int>, int> a[n];
sort(a,a+n);
最佳答案
2023-10-10 17:46:46
不会。pair默认按照第一个元素排序,如果第一个元素相等,则按照第二个元素排序。在这个例子中,pair的第一个元素是一个pair<int, int>类型,sort函数会默认按照这个pair的第一个元素排序,也就是按照第一个int类型排序。如果想要按照第二个int类型排序,可以使用自定义的比较函数,或者使用lambda表达式来进行排序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-10 17:46:46 | 显示全部楼层    本楼为最佳答案   
不会。pair默认按照第一个元素排序,如果第一个元素相等,则按照第二个元素排序。在这个例子中,pair的第一个元素是一个pair<int, int>类型,sort函数会默认按照这个pair的第一个元素排序,也就是按照第一个int类型排序。如果想要按照第二个int类型排序,可以使用自定义的比较函数,或者使用lambda表达式来进行排序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-10 17:47:52 | 显示全部楼层
是的,按照 pair 类型的元素默认会进行字典序排序。也就是说,首先比较第一个 pair 类型元素中的第一个数据成员(时),如果相同再比较第二个数据成员(分),如果还相同就按照第二个元素(即 int 类型的秒)比较。

因此,在题目中,虽然没有明确给出排序的方式,但是我们可以根据要求调整排序方式。例如,如果要按照时间从早到晚进行排序,就需要编写自定义的比较函数来实现。

如果你需要按照题目给出的要求,对秒进行降序排列,可以参考我在上一个问题中的回答,使用自定义比较函数实现。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 20:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表