使用STL的sort函数发生invalid comparator异常解决方案

在使用STL的sort()函数进行排序时,使用了自己写的cmp函数,结果运行时报invalid comparator异常,所用到的cmp函数如下。

bool cmp(int a, int b) {
    return a >= b;
}

上面的函数,当传入的参数ab相等时,函数的返回值是true,这在C++标准中是不被允许的。C++标准规定cmp函数是弱序的,这个概念与数据结构上的稳定的排序相同,即对于相等的数,排序前后其相对位置不变。
上面的cmp函数改成下面这样就可以了。

bool cmp(int a, int b) {
    return a > b;
}

也就是说当比较的两个数相等时,应该返回false

发布了172 篇原创文章 · 获赞 81 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_43074474/article/details/105333104