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

C++ pair组成的vector如何按first降序、second升序排序?

实现方案

前置依赖

  • 需引入排序所需的头文件:#include <algorithm>
  • 已引入vector、string、pair对应的头文件

实现方式1:C++11及以上版本(推荐,lambda表达式写法)

直接在std::sort的第三个参数传入自定义比较逻辑即可:

sort(results.begin(), results.end(), [](const pair<int, string>& a, const pair<int, string>& b) {
    // 先按第一个元素int降序排序
    if (a.first != b.first) {
        return a.first > b.first;
    }
    // int相等时按第二个元素string字典序升序排序
    return a.second < b.second;
});

实现方式2:兼容C++03及更早版本(独立比较函数写法)

先定义全局的比较函数:

bool customCompare(const pair<int, string>& a, const pair<int, string>& b) {
    if (a.first != b.first) {
        return a.first > b.first;
    }
    return a.second < b.second;
}

调用排序时传入该函数:

sort(results.begin(), results.end(), customCompare);

效果验证示例

比如输入的results初始内容为:
{3, "banana"}, {1, "apple"}, {3, "cherry"}, {2, "date"}
排序后输出顺序为:
{3, "banana"}, {3, "cherry"}, {2, "date"}, {1, "apple"}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 21:48:01