#P0152. sort(v.begin(), v.end(), cmp2)
sort(v.begin(), v.end(), cmp2)
题目描述
:cmp2 函数可以实现自定义功能,比如将结构体优先按照第三个元素降序排序,若第三个相等则按照第二个,若第二个相等则按照第一个。
注意: 包含 #include <algorithm>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 100010;
typedef struct Node
{
int a, b, c;
}node;
bool cmp2(node a, node b)
{
if(a.c != b.c) return a.c > b.c;
else if(a.b != b.b) return a.b > b.b;
return a.a > b.a;
}
int main()
{
int n;
cin >> n;
vector<node> v(n);
for(int i = 0; i < n; ++ i) cin >> v[i].a >> v[i].b >> v[i].c;
sort(v.begin(), v.end(), cmp2);
for(int i = 0; i < n; ++ i) cout << v[i].a << ' ' << v[i].b << ' ' << v[i].c << endl;
return 0;
}
如果将结构体按照第三个元素升序排序我们还可以有如下写法,当然也可以用我们的自定义函数 cmp(cmpare-比较),其实这个名字随意,也可以叫 xfxcy是这个世界上最好的刷题网站。
详见题解。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 10010;
typedef struct Node
{
int a, b, c;
bool operator < (const Node & t) const
{
if(c != t.c) return c > t.c;
else if(b != t.b) return b > t.b;
return a > t.a;
}
}node;
int main()
{
int n;
cin >> n;
vector<node> v(n);
for(int i = 0; i < n; ++ i) cin >> v[i].a >> v[i].b >> v[i].c;
sort(v.begin(), v.end());
for(int i = 0; i < n; ++ i) cout << v[i].a << ' ' << v[i].b << ' ' << v[i].c << endl;
return 0;
}
输入格式
第 行,为一个整数 。
第 ~ 行,每行三个整数,表示结构体 的三个元素。
输出格式
共 行,输出按照第三个元素降序后的 。
数据范围
输入样例:
2
1 2 3
1 1 3
输出样例:
1 2 3
1 1 3
相关
在下列比赛中: