字符串比较时,在C++中,需要添加include cstring
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
#include<string>
#include<vector>
#include<cstring>
using namespace std;
#define NUM 5
struct Student{
unsigned ID;
char szName[20];
float fGPA;
};
Student MyClass[NUM] = {
{1234, "Tom", 3.78},
{1345, "Sam", 2.12},
{1235, "Bob", 4.77},
{1456, "Echo", 1.34},
{1578, "Amy", 3.04},
};
int IDCompare(const void *elem1, const void * elem2)
{
Student *stu1 = (Student *) elem1;
Student *stu2 = (Student *) elem2;
return (*stu1).ID - (*stu2).ID;
}
int NameCompare(const void *elem1, const void * elem2)
{
Student *stu1 = (Student *) elem1;
Student *stu2 = (Student *) elem2;
return strcmp(stu1->szName, stu2->szName);
}
int main()
{
qsort(MyClass,NUM, sizeof(Student), IDCompare);
cout << "sorted based on the IDS: " << endl;
for(int i = 0; i < NUM; i++){
cout << MyClass[i].szName << " ";
}
cout << endl;
qsort(MyClass,NUM, sizeof(Student), NameCompare);
cout << "sorted based on the name : " << endl;
for(int i = 0; i < NUM; i++){
cout << MyClass[i].szName << " ";
}
cout << endl;
}