Неожиданная коллизия с std :: hash

Я знаю, что хеширование бесконечного числа строк в 32b int должно вызывать коллизию, но я ожидаю от хеш-функции хорошего распределения.

Разве не странно, что у этих двух строк один и тот же хэш?

size_t hash0 = std::hash<std::string>()("generated_id_0");
size_t hash1 = std::hash<std::string>()("generated_id_1");
//hash0 == hash1

Я знаю, что могу использовать boost :: hash или другие, но я хочу знать, что неверно с std :: hash . Я неправильно это использую? Разве я не должен как-то "засеять" его?

14
задан Marc Mutz - mmutz 30 April 2015 в 13:47
поделиться