百度安全验证
百度安全验证
sort函数的具体用法?
0C++ sort函数
比较函数是为了区分两个参数是大于等于或者小于,分别以返回值大于0、等于0和小于0来判定。因为排序的目的主要是让决定谁在前谁在后的问题,所以通常你只需要定义小于就行了。如果compare(a,b)是判定a b,那么根据基本的逻辑,compare(b,a)肯定是判定a b,如果既不大于也不小于,那肯定就是等于了。所以C++的sort的第三个参数函数原型返回值实际上bool类型,只需要在内部确定a 排在b前面时返回true就行了。虽然你用的整型返回值,但也是一样的,0为false,非0为true。显然,这里涉及到一个逻辑问题,compare(a,b)返回true时表示a排在b前面,为了逻辑准确sort函数内部还有一次验证compare(b,a)是否也为true,如果也为true则出现了逻辑错误了,因为不知道到底是a在前还是b在前。如果你在compare(a,b)内部用的是=返回true,那么在一个没有相等的Letter.big成员时还正常,如果有相等的Letter.big成员时,就出现了compare(a,b)和compare(b,a)都为true,这是错误的。