49

我最近发现 C++ 中哈希映射的实现将被称为unordered_map.

当我查找他们为什么不只是 usinghash_map时,我发现显然存在与解决方案的实现的兼容性问题hash_mapunordered_map更多关于它在这里)。

该 wiki 页面没有提供更多信息,所以我想知道是否有人知道hash_mapunordered_map解决的一些问题。

4

1 回答 1

80

由于 C++ 标准库中没有定义哈希表,标准库的不同实现者会提供一个非标准哈希表,通常命名为hash_map. 因为这些实现不是按照标准编写的,所以它们在功能和性能保证上都有细微的差别。

C++11开始,哈希表实现已添加到 C++ 标准库标准中。决定为该类使用一个替代名称,以防止与这些非标准实现发生冲突,并防止hash_table其代码中的开发人员无意中使用新类。

选择的替代名称unordered_map确实更具描述性,因为它暗示了类的映射接口及其元素的无序性质。

于 2009-10-29T20:20:41.907 回答