Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ksk- от Март 01, 2013, 17:30



Название: Проверка на наличие объекта произвольного типа в множестве QSet.
Отправлено: ksk- от Март 01, 2013, 17:30
Всем привет. Насколько я понял, чтобы при вызове у QSet`а метода contains с объектом произвольного типа проверка на наличие выполнялась корректно, необходимо у для объектов этого типа определить оператор "==" и метод qHash(). Если с "==" мне все более-менее ясно, то с qHash() я так и не разобрался.

Прошу знающих людей растолковать мне как же это правильно сделать и по возможности привести пример.

Заранее спасибо.


Название: Re: Проверка на наличие объекта произвольного типа в множестве QSet.
Отправлено: Igors от Март 01, 2013, 18:41
qHash не метод а ф-ция которую объявленный QSet должен видеть, напр
Код
C++ (Qt)
uint qHash( float val )
{
return *(uint *) &val;
}
Уникальность возвращаемого значения не требуется, но чем уникальнее  - тем лучше, т.к. все ключи с таким qHash будут помещены в одну "корзину", а внутри нее уже будут искаться перебором используя оператор ==. Поэтому данные для которых == вернет true должны возвращать один и тот же uint хеш