C ++将项添加到集合中

时间:2017-10-24 20:09:45

标签: c++ set

我是c ++的新手,在添加项目时遇到问题,似乎只添加了第一项。我怀疑它与我的比较功能有关。

主要

set<obj> objs;
objs.insert(obj1);
objs.insert(obj2);
objs.insert(obj3);

cout << objs.size() << endl; //Outputs 1

for (Obj const& obj: objs)
{
    obj.display();
}

我的比较

bool operator<(const obj& Left, const obj& Right)
{
    if (Left.getID() == Right.getID())
    {
        return true;
    }
    return false;
}

1 个答案:

答案 0 :(得分:0)

std::set需要严格的弱排序。 (这告诉std::set哪个元素首先出现。 ==不满足该要求,是的,您怀疑是对的。 (a==b相当于b==a,但a comes before b表示b comes AFTER a

return Left.getID() < Right.getID();是非常明显的修复方法。

改编自Slava的评论