【问题标题】:How to sort vector of pair<int, char> by both first and second value? [duplicate]如何按第一个值和第二个值对 pair<int, char> 的向量进行排序? [复制]
【发布时间】:2019-09-26 00:59:48
【问题描述】:

这是我排序后的输出vector of pair&lt;int, char&gt;

6 X
6 E
6 C
5 D
4 D
4 B
2 A

但我希望它按整数降序排序,在整数相同的情况下按字母升序排序。像这样:

6 C
6 E
6 X
5 D
4 D
4 B
2 A

这是我的代码:

#include <bits/stdc++.h>
using namespace std;

int main() {
    vector<pair<int, char>> v;
    v.push_back(make_pair(5, 'D'));
    v.push_back(make_pair(2, 'A'));
    v.push_back(make_pair(6, 'C'));
    v.push_back(make_pair(4, 'B'));
    v.push_back(make_pair(4, 'D'));
    v.push_back(make_pair(6, 'X'));
    v.push_back(make_pair(6, 'E'));

    sort(v.rbegin(), v.rend());

    for (auto x: v)
        cout << x.first << " " << x.second << endl;

    return 0;
}

【问题讨论】:

    标签: c++ algorithm sorting vector stl


    【解决方案1】:

    你可以手动写:

    sort(v.begin(), v.end(),
      [](auto a, auto b) {
        return a.first > b.first || (a.first == b.first && a.second < b.second);
      }
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多