关于cppreference中sort的一个问题

img

img


请问sort的这一行怎么理解?
bool cmp(const Query& x, const Query& y){
int a = get_block(x.l);
int b = get_block(y.l);
if(a != b)return a < b;
return x.r < y.r;
}

就是cmp必须满足

  • 非自反性,即自己和自己比较永远返回假
  • 不对称性,即如果a和b比较返回真,那么把它们换过来比较一定是假
  • 传递性,即如果a和b比较返回真,b和c比较返回真,那么a和c比较也是真

等价关系是由cmp推导出来的,equiv(a, b) = !cmp(a, b) && !cmp(b, a)
<和>是满足上面三条属性
所以排序时,需要定义<或>比较函数来决定是按递增还是递减顺序来排序。