You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中对pair类型的vector进行降序排序?

对vector<pair<int,int>>进行降序排序的正确方法

你当前使用的代码sort(v.begin(),v.end(),greater<int> ())会触发编译错误,原因是greater<int>仅适用于int类型的比较,而你的容器元素是pair<int,int>,类型不匹配。

以下是几种可行的正确实现方式:

  • 使用greater<pair<int,int>>作为比较器,它会遵循pair的默认比较规则(先比较第一个元素,第一个元素相等时再比较第二个元素)进行降序排序:

    sort(v.begin(), v.end(), greater<pair<int, int>>());
    
  • 自定义lambda表达式,实现更灵活的排序逻辑(比如优先按第一个元素降序,第一个元素相等时按第二个元素降序):

    sort(v.begin(), v.end(), [](const pair<int, int>& a, const pair<int, int>& b) {
        if (a.first != b.first) {
            return a.first > b.first;
        }
        return a.second > b.second;
    });
    
  • 若需仅按第二个元素降序排序,同样可以通过lambda实现:

    sort(v.begin(), v.end(), [](const pair<int, int>& a, const pair<int, int>& b) {
        return a.second > b.second;
    });
    

内容的提问来源于stack exchange,提问作者eren_yeager08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:02:05