一句话理解
自定义排序告诉 sort:谁应该排在谁前面。
为什么要学
多关键字:先按分数降序,分数相同按编号升序。
讲解
写 bool cmp(const Stu& a, const Stu& b)。返回 true 表示 a 应排在 b 前。必须严格弱序,相等时返回 false。
也可以在结构体里重载 operator<。
例子
bool cmp(const Stu& a, const Stu& b) {
if (a.score != b.score) return a.score > b.score;
return a.id < b.id;
}
sort(a + 1, a + n + 1, cmp);
分数高的在前;分数相同,id 小的在前。
常见错误
- 相等时返回 true,sort 可能崩溃或乱序。
- 比较函数改了数组内容。