Мне нужно реализовать набор наборов в моем приложении.
Использование QSet с пользовательским классом требует предоставления функции qHash ()
и оператора ==
.
Код выглядит следующим образом:
class Custom{
int x;
int y;
//some other irrelevant here
}
inline uint qHash(Custom* c){
return (qHash(c->x) ^ qHash(c->y));
}
bool operator==(Custom &c1, Custom &c2){
return ((c1.x==c2.x) && (c1.y == c2.y));
}
//now I can use: QSet<Custom*>
Как я могу реализовать qHash (QSet
, чтобы иметь возможность использовать QSet
?
Изменить:
Дополнительный вопрос:
В моем приложении «набор наборов» может содержать до 15000 наборов. Каждое подмножество до 25 указателей пользовательских классов. Как гарантировать, что qHash (QSet
будет достаточно уникальным?