C++将项目添加到集合中

C++ adding items to a set

本文关键字:集合 添加 项目 C++      更新时间:2023-10-16

我是 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;
}

>std::set需要严格的弱排序。(这告诉std::set哪个元素先出现)。 ==不符合该要求,是的,您怀疑是对的。(a==b等同于b==a,但a comes before b表示b comes AFTER a

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

改编自斯拉瓦的评论