C++中,结构体是无法进行==,>,<,>=,<=,!=操作的,如要使用这些操作符对结构体进行操作,则要在结构体内部对这些运算符进行重载,将结构体的比较转化为结构体内部的数字或者字符的比较。
例题:王道机试指南

结构体定义:
struct Student
{
char name[MAX];
int age;
int grades;
//运算符重载--引用
bool operator < (const Student &b) const {
if (grades != b.grades) return grades < b.grades;
else
{
if (strcmp(name, b.name) != 0)
return strcmp(name, b.name) < 0;
else
return age < b.age;
}
}
} student[1001];
解题函数:
void WD2_2() {
int Count = 0;
//cin >> Count;
while (cin >> Count)
{
for (int i = 0; i < Count; i++)
{
cin >> student[i].name;
cin >> student[i].age;
cin >> student[i].grades;
}
/*sort(student, student + Count, cmp);*/
sort(student, student + Count);
for (int i = 0; i < Count; i++)
{
cout << student[i].name << " " << student[i].age << " " << student[i].grades << endl;
}
return;
}
}
网友评论