cNoNim
> т.е. ты только сейчас понял о чем код в статье?
Вы за темой вообще следите?
Много лишних сущностей, выделений памяти и синтаксического мусора
http://www.gamedev.ru/code/forum/?id=208411&page=3#m43
> все остальные вопросы можешь адресовать автору )
Вопросы адресованные к вам относятся к вашему варианту кода, поскольку "автор" ушёл в глубокую несознанку)
cNoNim
А можно для тех, кто в танке,- в чём юмор?
Hybernaculum
так я все что сделал поудалял лишние сущности в коде )
FordPerfect
ты unordered_map пользоваться тоже не умеешь?
что необходимо для использования чего либо в качестве ключа в unordered_map?
cNoNim
Мы на ты не переходили вроде.
cNoNim
> тебе ни чего не говорит словосочетание hash collision?
А вам никто не говорил что пример это пример? Замените хеширующую функцию на свою, в чем проблема?
cNoNim
> ладно не могу удержаться
Недержание это плохо, держитесь подальше от наркотиков. Если вас слово хеш так смешит, может к врачу сходить?
0r@ngE
RTFM!
Коллизия хеш-функции
0r@ngE
какая хеш функция о чем вы?
как можно использовать хеш в качестве ключа?
вы наверное знаете тайную хеш функцию которая не дает коллизий на произвольной строке?
что вообще за бред?
Ну что же вы всё обосрали? неужели так плохо?
(я тут статейку собирался запилить про применение рефлексии, но теперь передумал.)
cNoNim
> какая хеш функция о чем вы?
> как можно использовать хеш в качестве ключа?
> вы наверное знаете тайную хеш функцию которая не дает коллизий на произвольной
> строке?
> что вообще за бред?
В теории колизии дают все хеш функции.
На практике, при достаточной длине строки и вменяемой хеш фукции колизий можно избежать.
Лично я использовал FNV-1a вариант в нескольких зашипленых проектах - колизий не наблюдалось, проекты принесли кучу денег. http://isthe.com/chongo/tech/comp/fnv/
Если сильно страшно - можно Murmurhash.
Да хоть SHA2 если совсем паранойя бьет.
PVSector
> (я тут статейку собирался запилить про применение рефлексии, но теперь передумал.)
Пишите и не обращайте внимание. Всегда найдутся те кому помогла ваша информация. Если хоть одному человеку будет полезна - уже не зря старались.
PVSector
> Ну что же вы всё обосрали? неужели так плохо?
Да особо то не обосрали (кроме парочки личностей).
Вон тот же cNoNim вроде старается конструктивно коментировать, хоть его и заносит немного на поворотах, но это же живая дискуссия, люди редко совпадают во мнениях ;)
0r@ngE
послушайте ) это какая то несуразица... вы наверное просто устали и поэтому не понимаете чего пишете
сколько бит у size_t?
какая нафиг достаточно длинная строка?
у вас там имя типа и все, проблемы с коллизиями есть и в git и практически везде хоть там sha2 используется хоть что,
но выставлять использование хеша фичей в коде который
> А вам никто не говорил что пример это пример
это конечно нонсенс )
при этом ведь я намекнул на более правильную реализацию хеширования и использования в качестве ключа type_index еще в 40 посте...
но ладно я понял, у вас же распределенная система события лолд ;)
так этот код пример чего?
Так, я совсем туплю.
1. Юмор в #63 был строго про коллизии? С коллизиями понятно.
2. Чем type_index поможет?
FordPerfect
в распределенной системе событий ни чем, в локальной type_index это то что придумали для того, что бы использовать в качестве ключа unordered_map типы, или это не совсем очевидно что в статье с этим убер хешем пытаются переизобрести rtti?
cNoNim
> послушайте ) это какая то несуразица... вы наверное просто устали и поэтому не понимаете чего пишете
Уважаемый, я действительно начинаю уставать от вас.
cNoNim
> сколько бит у size_t?
А платформу уточните? К чему вообще этот вопрос?
cNoNim
> какая нафиг достаточно длинная строка?
Ну, относительно длинная.
Еще раз вам повторю - на практике (некоторые не только теорию на форумах флудят) - колизий у меня еще небыло. Будут - буду решать для конкретного случая.
Из примеров под рукой - тот же Doom3 который тут так боготворят - idDict в качестве ключей только строки и принимает. Функция взятия хеша от строки у них вас вообще заставит повеситься.
cNoNim
> при этом ведь я намекнул на более правильную реализацию хеширования и использования в качестве ключа type_index еще в 40 посте...
Что мне от этого толку, если, к примеру, я с Windows машины шлю событие на Linux сервер? Соответствие std::type_info::hash_code на разных платформах стандартом не гарантируется.
0r@ngE
!!!карл!!!
для хеш таблиц нужна не только хеш функция, нужна функция равенства
использовать хеш функцию в хеш таблица, это не тоже самое что использовать хеш в качестве ключа
cNoNim
Конкретно type_index не гарантирует отсутствия коллизий. Конкретно GCC вызывает ровно хеш от строчки.
Если в map хранить type_info, а type_index использовать в качестве его хеш-функции, тогда ок, но таки вычисление хеша на каждый raise.
Тема в архиве.