每当我需要存储与特定类型的值(键值 - 例如字符串或其他对象)相关联的一些数据时,我通常使用C ++ stdlib映射。 stdlib映射实现基于树,它提供比标准数组或stdlib向量更好的性能(O(log n))。

我的问题是,你知道任何C ++ <!> quot; standard <!> quot;哈希表实现,提供更好的性能(O(1))?类似于Java API中Hashtable类中可用的内容。

有帮助吗?

解决方案

如果您使用的是C ++ 11,则可以访问<unordered_map><unordered_set>标题。这些提供 std::unordered_map std::unordered_set

如果您正在使用带有TR1的C ++ 03,则可以使用相同的标题访问类std::tr1::unordered_mapstd::tr1::unordered_set(除非您使用的是GCC,在这种情况下标题是<tr1/unordered_map>并且<tr1/unordered_set>代替)。

在所有情况下,也有相应的unordered_multimapunordered_multiset类型。

其他提示

如果您还没有unordered_map或unordered_set,则它们是提升的一部分。
以下是两者的文档

这里有许多 hash_map 对象,但它不是stl的一部分。这是SGI的延伸,所以如果你在寻找STL中的东西,我认为你运气不好。

std :: tr1 :: unordered_map,在<unordered_map>

如果你没有tr1,请加强并使用 <boost/unordered_map.hpp>

中的boost :: unordered_map

Visual Studio在标题stdext::hash_map中有<hash_map>类,而gcc在同一标题中有类__gnu_cxx::hash_map

请参阅SGI的 std :: hash_map

这也包含在 STLPort 发行版中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top