Название: Как определить qHash Отправлено: Igors от Июнь 22, 2011, 09:26 Добрый день
Код Так не проходит, нужна ф-ция Код Вопрос первый: где мне ее взять или как сконструировать? Конечно QPointF для примера, использоваться будут свои структуры Код Вопрос второй: так будут сравниваться указатели, а не их содержимое как мне нужно. В std::set я могу в конструкторе задать функтор, а как это сделать здесь? Спасибо Название: Re: Как определить qHash Отправлено: asvil от Июнь 22, 2011, 09:41 Код: uint qHash(const QPointF &p) Название: Re: Как определить qHash Отправлено: Igors от Июнь 22, 2011, 10:37 Код: uint qHash(const QPointF &p) Цитировать error: call of overloaded 'qHash(const float&)' is ambiguous Хорошо, пробую такnote: candidates are: uint qHash(char) uint qHash(uchar) uint qHash(signed char) uint qHash(ushort) uint qHash(short int) .. // длинный список но float в нем нет Код
Название: Re: Как определить qHash Отправлено: alexman от Ноябрь 29, 2011, 16:01 Igors, удалось qHash для QPointF написать? А вообще интересует QHash для QList<double>?
Название: Re: Как определить qHash Отправлено: Igors от Ноябрь 29, 2011, 19:31 Igors, удалось qHash для QPointF написать? А вообще интересует QHash для QList<double>? Нет, не победил :) Соскочил на STL (там хоть понятно что делать)Название: Re: Как определить qHash Отправлено: BRE от Ноябрь 29, 2011, 19:57 А вообще интересует QHash для QList<double>? А что не получается?Название: Re: Как определить qHash Отправлено: alexman от Ноябрь 29, 2011, 22:29 А вообще интересует QHash для QList<double>? А что не получается?Название: Re: Как определить qHash Отправлено: BRE от Ноябрь 29, 2011, 23:10 Пока в голову приходит только запись вектора в строку... Ну это один из вариантов.Много зависит от данных, которые хранятся в векторе. Если там большие числа, то можно их все сложить и умножить на размер вектора, результат привести к uint. Или приводить каждое число к uint и хорить их между собой. Но такие алгоритмы плохо подойдут, если в векторе хранятся числа от 0 до 1. Если это критическая функция, наверное лучше придумать несколько вариантов хеш-функций и по-тестировать их на реальных данных. Название: Re: Как определить qHash Отправлено: alexman от Ноябрь 30, 2011, 09:07 Или приводить каждое число к uint и хорить их между собой. Попробую этот вариант. Коллизии маловероятны. Чтобы лишний раз не считать значение qHash буду его кешировать. |