没难度上代码。
#include <bits/stdc++.h>
using namespace std;
struct node {
int id, g;
string name;
};
bool cmp1 (node a, node b) {
return a.id < b.id;
}
bool cmp2 (node a, node b) {
if (a.name != b.name) return a.name < b.name;
else return a.id < b.id;
}
bool cmp3 (node a, node b) {
if (a.g != b.g) return a.g < b.g;
else return a.id < b.id;
}
vector<node> v;
int main() {
int n, m, g, id;
string name;
scanf ("%d %d", &n, &m);
for (int i = 0; i < n; i++) {
cin >> id >> name >> g;
v.push_back(node{id, g, name});
}
if (m == 1) sort (v.begin(), v.end(), cmp1);
if (m == 2) sort (v.begin(), v.end(), cmp2);
if (m == 3) sort (v.begin(), v.end(), cmp3);
for (int i = 0; i < v.size(); i++) {
printf ("%06d %s %d\n", v[i].id, v[i].name.c_str(), v[i].g);
}
}
这篇博客展示了如何使用C++进行节点对象的排序。代码中定义了结构体`node`,包含id、g值和名字,并提供了三个比较函数用于根据id、名字和g值排序。程序读取节点数据,然后根据用户输入的排序方式(1-按id,2-按名字,3-按g值)进行排序并打印结果。
111

被折叠的 条评论
为什么被折叠?



