invalid operator< 异常处理

Code:
#include <list>

using std::list;

class myClass {
public:
     int a;
     int b;
};

static bool Compare(const myClass * f, const myClass *t) // compare pointers to myClass
{
    if (f->a >= t->a)
       return true;
   else 
       return false;
}

int main() {
    std::list<myClass*> m;      // list holds pointers to myClass objects
    m.sort(Compare);
}

 

当m里面的有相等的元素时,比较函数返回的是true,但是应该返回false,所以此时就会出现异常invalid operator<,解决方法:比较函数里不要出现相等判断。

你可能感兴趣的:(list,Pointers)