如何按第一个和第二个值对pair <int,char>的向量排序?

时间:2019-09-26 00:59:48

标签: c++ algorithm sorting vector stl

这是我排序的vector of pair<int, char>的输出:

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;
}

1 个答案:

答案 0 :(得分:0)

您可以手动编写:

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