问题描述
- 一个有关sort函数第三个参数返回值的疑问
-
#include
#include
#includeusing namespace std;
const int maxsize = 1000;
struct stu{
char name[100];
int age;
int score;
};bool cmp(stu a,stu b)
{
if(a.score < b.score)
return true;
int temp = strcmp(a.name,b.name);
if(temp < 0)
return true;
if(a.age < b.age)
return true;
return false;
}int main()
{
int n;
struct stu s[maxsize];
while(scanf("%d",&n) != EOF)
{
for(int i = 0;i < n;++i)
{
scanf("%s",&s[i].name);
scanf("%d",&s[i].age);
scanf("%d",&s[i].score);
}
sort(s,s+n,cmp);
for(int i = 0;i < n;++i)
{
printf("%s ",s[i].name);
printf("%d ",s[i].age);
printf("%d",s[i].score);
printf("n");
}
}return 0;
}
在这里的cmp函数,在运行时总是弹出invalid operator < 的错误,但是如果将cmp中的return true换成return a.score < b.score之类的就对了,这是为什么了?函数sort中第三个参数需要返回的不就是bool值吗?
时间: 2024-09-04 08:56:37