嘿嘿
个人比较喜欢用结构体来存两个有关联的变量,而不喜欢用二维数组,因为很容易出错,所以,想写一篇关于结构体排序的博客哈哈哈哈哈✪ ω ✪
头文件
我最经常用的是sort排序,,,这里头文件用的是
#include<algorithm>
使用方法
sort()函数的最常用,就是数组的排序,但是它也可以用在结构体排序上面
1.我们的结构体命名为一个结构体数组
struct Student { char name[11]; int solve; int time; }p[10000];
2.之后这样引用
int main() { sort(p,p+n,cmp);//在主函数中调用,结构体排序; }
3.具体的cmp函数为自己写的,像这个例子里,//按照题数,再罚时间,再名字(名字按字典序排列)
bool cmp(const Student& a, const Student& b) { if (a.solve != b.solve) { if (a.solve > b.solve) return true; else return false; } else if (a.time != b.time) return a.time < b.time; else return (strcmp(a.name, b.name) < 0); }
完整的案例代码
可以复制粘贴过去跑一跑,学会了也可以去牛客或者杭电上面找题目写哈哈哈哈哈哈哈哈哈哈哈
#include<iostream> #include<algorithm> using namespace std; struct Student { char name[11]; int solve; int time; }p[10000]; bool cmp(const Student& a, const Student& b) { if (a.solve != b.solve) { if (a.solve > b.solve) return true; else return false; } else if (a.time != b.time) return a.time < b.time; else return (strcmp(a.name, b.name) < 0); } int main() { cin>>n; for(int i=0;i<n;i++) cin>>p[i].name>>p[i].solve>>p[i].time; sort(p,p+n,cmp);//在主函数中调用,结构体排序; for(int i=0;i<n;i++) cout<<p[i].name; return 0; } //按照题数,再罚时间,再名字(名字按字典序排列)