我有以下结构用于比较Rect对象..
struct rectcomp {
bool operator() (const Rect& lhs, const Rect& rhs) const{
return lhs.size.width<rhs.size.width;
}
};
我有以下设置,我希望存储我的Rect
std::set<Rect,rectcomp> _availableRects;
我使用以下代码插入它;
void insertPairOfRects(const Rect rect1,const Rect rect2){
_availableRects.insert(rect1); //first line
_availableRects.insert(rect2); //second line
}
问题是,rect1总是插入,但rect2不插入。当我单步执行调试器时,在函数insertPairOfRects的第一行之后,我可以清楚地看到insertPairOfRects中对象数量的增加....但是对于第二行我不能。
我犯了什么错误?
编辑:我怀疑是因为我的比较器功能出错了。我之前从未写过一套,所以我想这可能是一个根本的误解......答案 0 :(得分:1)
我只是假设rect1.size.width == rect2.size.width
,这使得比较器在两种情况下都返回false,在这种情况下,对象不会被插入到集合中,因为集合没有&#39; t允许重复。更改矩形或制作更详细的比较器。