如何通过第一个值和第二个值对pair 的向量进行排序? [复制]

问题描述 投票:0回答:1

此问题与以下内容完全相同:

这是我排序的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;
}
c++ algorithm sorting vector stl
1个回答
0
投票

您可以手动编写:

sort(v.begin(), v.end(),
  [](auto a, auto b) {
    return a.first > b.first || (a.first == b.first && a.second < b.second);
  }
);
© www.soinside.com 2019 - 2024. All rights reserved.