此问题与以下内容完全相同:
这是我排序的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;
}
您可以手动编写:
sort(v.begin(), v.end(),
[](auto a, auto b) {
return a.first > b.first || (a.first == b.first && a.second < b.second);
}
);