У меня есть следующая структура для сравнения объекта Rect ..
struct rectcomp {
bool operator() (const Rect& lhs, const Rect& rhs) const{
return lhs.size.width<rhs.size.width;
}
};
У меня есть следующий набор, где я хочу хранить свои Rect’s
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 …. но для второй я не могу.
Какую ошибку я делаю?
РЕДАКТИРОВАТЬ: я подозреваю, что это из-за ошибки в моей функции компаратора. Я никогда не писал ни одного ранее для съемок, поэтому я думаю, что это, вероятно, фундаментальное недоразумение здесь …
Я просто собираюсь предположить, что rect1.size.width == rect2.size.width
, это заставляет компаратор возвращать false в обоих случаях, когда объект не вставляется в набор, потому что набор не допускает дублирования. Либо поменяйте прямоугольники, либо сделайте более детальный компаратор.
Других решений пока нет …