Code Bye

关于std::sort()里面自定义比较函数的问题,请教

bool comp(const int lhs,const int rhs)
{
return lhs <= rhs;
}
std::sort(v1,v2,comp);
这种,请教高手,为何上面comp里面用lhs<=rhs会报错,而用lhs<rhs则不会呢?
知道不能这样写,但是原理不清楚
解决方案

80

std的sort函数用的是QuickSort算法,采用分段递归排序。
加上=可能会出现死循环,在递归的时候出现问题,导致无限递归循环。
Effecitve STL 中第 21条: 永远让比较函数对相同元素返回false。
不过也有一个更保险的方法就是使用stable_sort函数,这个函数是稳定排序算法,当两个元素相等的时候会保持次序。经验证,不管任何情况,该函数都不会引起死循环。不过该函数比起sort函数来开销会大一点。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于std::sort()里面自定义比较函数的问题,请教