个人比较喜欢用结构体来存两个有关联的变量,而不喜欢用二维数组,因为很容易出错.
头文件
我最经常用的是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;
}
//按照题数,再罚时间,再名字(名字按字典序排列)
chatgpt 关于 sort 函数第三个参数使用说明
当返回值为 true 时,表示第一个参数应该排在第二个参数之前。