Re[12]: std::hash
От: MTD https://github.com/mtrempoltsev
Дата: 11.10.17 13:48
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>И не используешь не по назначению функцию


Назначение функции hash — дать хеш.

Q>которая «designed to work with unordered associative containers... The unordered associative containers... use specializations of the template std::hash as the default hash function.» ©


Какой авторитетный источник. В стандарте тоже написано, что использовать только с хеш-контейнерами? Почему тогда не сделана внутренней?

Q>Будут при arity(k) > arity(M). Это пример был к тому, что твоя identity — никак не «идеальная».


Да, но лучше того, что сделали в Майкрософт.

MTD>>Допустим, мне просто нужен хеш, при хеш = k коллизий гарантировано нет.


Q>Так и используешь k, не вызывая никаких std::hash.


Мне нужно через std::hash — я обобщенный код пишу.

MTD>>Не убедительно. Почему в одном случае надо специально подбирать, а во втором само получится?


Q>Вот скажем ты отфильтровал из базы всех пользователей-женщин, и используешь их идентификаторы как ключи. А админ базы в своё время решил при создании всем пользователям-женщинам назначать id кратный 7, мол, их всё равно в шесть раз меньше в компании; почему нет. У тебя образовалась неявная связь, не случайная. А если у тебя рандомизация, без явной закономерности, то в такие совпадения почти невозможно попасть. Нет правдоподобных сценариев.


Совсем не убедительно.

MTD>>То есть в Майкрософте сделали фигню? Ну ок.


Q>Почему фигню, если вычислять индекс делением на степень двойки быстрее, чем делением на простое число?


А до этого в цикле 8 раз умножить и 8 раз сделать xor. Хммм, и правда быстрее
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.