结构体排序+sort()

问题遇到的现象和发生背景 :结构体排序+sort()
用代码块功能插入代码,请勿粘贴截图

C++代码:

#include
#include
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>p[i].name>>p[i].solve>>p[i].time;
    sort(p,p+n,cmp);
    for(int i=0;ireturn 0;
}

请问这个cmp是怎么进行排序的?(排序过程)能不能给个详细的解释?我之前在csdn上搜的几个代码都看不懂那里面的解释QWQ.
谢谢了!

先是比较solve,大的在前面
如果solve相同去比较 time, time 小的在前面
time还相同去比较name,name小的在前面

这个其实比较的就是结构体里的每一个成员。
比如第一个solve,比较两名学生的solve值,如果不相等就进行大小比较。
if (a.solve > b.solve)如果a的solve值比b的大,则返回true,表明前者大于后者。
反之,则前者小于后者。
其他两位成员time和name也是同样的道理。