为什么operator==对于std::unordered_map来说不足够?- C++

3

为什么我需要同时实现==操作符和返回size_t的随机操作符?而且返回size_t的方法应该返回什么?

编辑:当我说随机操作符时,我并不是说它没有用处。我的意思是,在我看来,我不知道它有什么用处,因此有了最后一个问题。


1
http://en.wikipedia.org/wiki/Hash_table - R. Martinho Fernandes
6
您不需要一个随机操作符,而是需要实现一个哈希函数,针对给定的键类型实例返回一个“大小”。这是因为“unordered_map”是一个哈希映射。 - juanchopanza
7
什么是“随机算子”? - Captain Obvlious
1
如果你想从你的unordered_map中获得*O(n)*的操作,那就去做吧! - Praetorian
1
如果你读过维基百科的文章,这一切都会变得非常清晰明了 :-) - juanchopanza
显示剩余11条评论
1个回答

4
一个哈希容器(哈希表,哈希映射,无序映射)使用哈希函数生成单个整数值来表示条目的索引(或键)。这使得查找非常快速,因为(假设我们有一个很好的哈希值分布)一旦我们有了哈希值,我们只需要查看该索引。大多数其他存储方法意味着比较一堆东西,直到找到正确的元素。
关于哈希键其实只有两个规则: 1. 对于给定的输入,每次调用哈希函数都会得到相同的键。 2. 不同的输入得到不同的值 - 它不必是唯一的,但从类似输入中获得更好的扩展性越好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接