文章
3
粉丝
6
获赞
18
访问
619
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
// 定义学生结构体
struct student {
std::string name;
int score;
};
// 降序比较函数,使用引用传递参数
bool cmp1(const student& a, const student& b) {
return a.score > b.score;
}
// 升序比较函数,使用引用传递参数
bool cmp2(const student& a, const student& b) {
return a.score < b.score;
}
int main() {
int n, way;
while (std::cin >> n) {
std::cin >> way;
// 直接创建空向量,避免冗余操作
std::vector<student> arr;
for (int i = 0; i < n; ++i) {
student s;
std::cin >> s.name >> s.score;
arr.push_back(s);
}
&nb...
登录后发布评论
xd,这个要求相同成绩先录入排列在前的,sort不稳定,用stalbe_sort就ak了
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
// 定义学生结构体
struct student {
std::string name;
int score;
};
// 降序比较函数,使用引用传递参数
bool cmp1(const student& a, const student& b) {
return a.score > b.score;
}
// 升序比较函数,使用引用传递参数
bool cmp2(const student& a, const student& b) {
return a.score < b.score;
}
int main() {
int n, way;
while (std::cin >> n) {
std::cin >> way;
// 直接创建空向量,避免冗余操作
std::vector<student> arr;
for (int i = 0; i < n; ++i) {
student s;
std::cin >> s.name >> s.score;
arr.push_back(s);
}
if (way == 0) { // 降序
std::stable_sort(arr.begin(), arr.end(), cmp1);
} else if (way == 1) { // 升序
std::stable_sort(arr.begin(), arr.end(), cmp2);
}
for (int i = 0; i < n; ++i) {
std::cout << arr[i].name << " " << arr[i].score << std::endl;
}
}
return 0;
}