我是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;
}
答案 0 :(得分:0)
std::set
需要严格的弱排序。 (这告诉std::set
哪个元素首先出现。 ==
不满足该要求,是的,您怀疑是对的。 (a==b
相当于b==a
,但a comes before b
表示b comes AFTER a
)
return Left.getID() < Right.getID();
是非常明显的修复方法。
改编自Slava的评论