Russian Qt Forum
Ноябрь 25, 2024, 21:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проверка на наличие объекта произвольного типа в множестве QSet.  (Прочитано 2414 раз)
ksk-
Самовар
**
Offline Offline

Сообщений: 178



Просмотр профиля
« : Март 01, 2013, 17:30 »

Всем привет. Насколько я понял, чтобы при вызове у QSet`а метода contains с объектом произвольного типа проверка на наличие выполнялась корректно, необходимо у для объектов этого типа определить оператор "==" и метод qHash(). Если с "==" мне все более-менее ясно, то с qHash() я так и не разобрался.

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

Заранее спасибо.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Март 01, 2013, 18:41 »

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


Страница сгенерирована за 0.074 секунд. Запросов: 23.