Мы используем несколько форм хеширования в проекте исследовательской базы данных.Например, для радикальной кластеризации, где мы используем n младшие значащие биты для определения идентификатора кластера.Мы используем std::hash
для хеширования, что нам достаточно.
Однако, хотя мы знаем, что большинство реализаций используют идентичность для хеширования целых чисел, мы наткнулись на тот факт, что хеширование с плавающей запятой (имеет ли это смысл или нетЭто другое обсуждение) по-разному реализовано на разных платформах.
Есть ли какие-либо справедливые предположения, которые мы можем сделать о std::hash
?
MacOS: clang version 6.0.1 (tags/RELEASE_601/final)
std::hash<float>{}(1.0f): 0000000000000000000000000000000000111111100000000000000000000000
std::hash<double>{}(1.0): 0011111111110000000000000000000000000000000000000000000000000000
Ubuntu: clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
std::hash<float>{}(1.0f): 0101001111100101011001010000100100010100111101010010111101001101
std::hash<double>{}(1.0): 0111010001100001101001000101000001001110110011100111101110011011