Tôi biết băm vô hạn chuỗi thành 32b int phải tạo ra xung đột, nhưng tôi mong đợi từ hàm băm một số phân phối tốt đẹp.Va chạm bất ngờ với std :: hash
Thật lạ khi hai chuỗi này có cùng một mã băm?
size_t hash0 = std::hash<std::string>()("generated_id_0");
size_t hash1 = std::hash<std::string>()("generated_id_1");
//hash0 == hash1
Tôi biết tôi có thể sử dụng boost::hash<std::string>
hoặc những người khác, nhưng tôi muốn biết những gì là sai với std::hash
. Tôi có sử dụng sai không? Không phải tôi bằng cách nào đó "hạt giống" nó?
Trình biên dịch và phiên bản nào? – Joe
@ Joe Tôi sử dụng MSVC10 – relaxxx
@relaxxx: MSVC10 có lẽ sẽ là người cuối cùng cung cấp bản thực thi đầy đủ C++ 11 (nếu họ muốn). nếu bạn muốn thực hiện công việc, cái thực hiện đầy đủ nhất là clang. bạn cũng có thể thử gcc phổ biến hơn. – Dani