boost::hash
具有适用于大多数内置类型(包括容器)的哈希函数。
但如 boost::hash_range
function description 中所述, 范围的哈希算法
is sensitive to the order of the elements so it wouldn't be appropriate to use this with an unordered container
因此,std::unordered_map
和 boost::unordered_map
都没有 boost::hash
特化。
问题是:
是否有一种“简单有效”的方法来散列 unordered_map
而无需从头开始重新实现散列算法?
最佳答案
这里的问题是无法保证这些项目甚至在它们之间有顺序。
因此,对项目进行排序很可能不适用于任意未排序的容器。您有 2 个选择:
- 只需对所有单个元素的哈希值进行异或运算。这是最快的。
- 首先对容器的散列 进行排序,然后然后 对它们进行散列。这可能会产生更好的散列。
关于c++ - 如何散列 unordered_map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25245624/