如何按第一个值和第二个值对 pair<int, char> 的向量进行排序? [复制]
Posted
技术标签:
【中文标题】如何按第一个值和第二个值对 pair<int, char> 的向量进行排序? [复制]【英文标题】:How to sort vector of pair<int, char> by both first and second value? [duplicate] 【发布时间】:2019-09-26 00:59:48 【问题描述】:这是我排序后的输出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】:你可以手动写:
sort(v.begin(), v.end(),
[](auto a, auto b)
return a.first > b.first || (a.first == b.first && a.second < b.second);
);
【讨论】:
以上是关于如何按第一个值和第二个值对 pair<int, char> 的向量进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
按第二个值对元组列表进行排序,reverse=True,然后按 key,reverse=False