在使用STL的sort()
函数进行排序时,使用了自己写的cmp
函数,结果运行时报invalid comparator异常,所用到的cmp
函数如下。
bool cmp(int a, int b) {
return a >= b;
}
上面的函数,当传入的参数a
和b
相等时,函数的返回值是true
,这在C++标准中是不被允许的。C++标准规定cmp
函数是弱序的,这个概念与数据结构上的稳定的排序相同,即对于相等的数,排序前后其相对位置不变。
上面的cmp
函数改成下面这样就可以了。
bool cmp(int a, int b) {
return a > b;
}
也就是说当比较的两个数相等时,应该返回false
。