C++ std :: set comparator

Tho*_*ini 2 c++ set comparator stdset

这是代码:

struct comp
{
    bool operator()(Reputation *one, Reputation *two)
    {
        if (one->Amount < 0 && two->Amount >= 0)
            return false;
        if (one->Amount >= 0 && two->Amount < 0)
            return true;

        if (one->Amount >= 0)
            return one->Amount <= two->Amount;
        else
            return one->Amount >= two->Amount;
    }
};
Run Code Online (Sandbox Code Playgroud)

这就是问题所在:

调试断言失败!
文件:..\VC\include\xtree
行:638

表达式:无效的运算符<

之后,我可以选择"Abort","Retry"或"Ignore".如果我选择忽略更多(相同的),但它最终会完美地工作.

当我将 - > Amount ==的信誉插入到之前插入的信誉*之一时,似乎会出现问题,但我不确定最后一个.

任何帮助将不胜感激

编辑:我希望他们订购的顺序首先是按顺序排列的顺序,然后按顺序顺序排列.示例:1 5 10 11 11 20 50 -1 -5 -50

Ale*_*lli 6

您必须定义一个非反射的关系,就像<- 因此,在方法的最后几个比较中更改<=to <和'> ='到'>'.这就是VC++诊断的内容.

此外,给定一个正确编码的<-类似运算符,如果两个项a和b是a <b和b <a都是假的,则这些项被认为是等价的,因此只有一个项将被插入集合中(它不是重要的)这些项目可以通过其他比较来区分:只有比较器所暗示的等价关系很重要.