【问题标题】:What bit hash function does unordered_map use?unordered_map 使用什么位哈希函数?
【发布时间】:2011-08-05 05:40:56
【问题描述】:

unordered_mapC++0x 默认使用什么位哈希? std::hash 函数返回 size_t。这是否意味着unordered_map 使用了 16 位散列函数?

【问题讨论】:

  • sizeof(std::size_t) * CHAR_BIT 位。
  • 根据您的问题,我想知道您是否希望散列函数成为流行的东西,例如 SHA256 或 CRC32——事实并非如此。例如,整数只是自己散列。
  • @Kerrek Integers 可能不会自己散列。如果将连续整数放入 unordered_map 中,这对性能来说会很糟糕。
  • @Cory:至少 GCC 和 Boost 是这样为基本整数类型实现 std::hash...

标签: c++ c++11 unordered-map


【解决方案1】:

std::unordered_set 默认使用std::hash

如果std::size_t 对您来说是 16 位的,那么我猜它确实使用了 16 位哈希。在 16 位机器上,我希望 unordered_map::max_size() 足够低,使用如此弱的哈希不会有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    相关资源
    最近更新 更多