나는 코드를 작성하는 것입니다 찾을 충돌에 대한 std::hash<std::string>
고 노력하고 역의 일부는 해시 계산 단계가 있습니다.
이와 같은 곱하기에 std::hash
구현합니다.
size_t hash2 = shift_mix(hash1) * mul;
알 hash2
-이전 단계에서,또한 알 mul
-it's constant value= 0xc6a4a7935bd1e995UL
.
shift_mix(hash1) * mul
인 오버플로우(hash2 / mul = 0
다),그래서 그만 마지막 64 비트의 곱셈 결과입니다.
그래서 나는 방법이 필요를 찾아의 많은 변종 shift_mix(hash1)
을 만족하는 평등. 가장 좋은 방법은 무엇을 할까? 아마도 어떻게 든 사용 __int128_t
?