H ++中的Hashtable?

Mar*_*nto 55 c++ performance complexity-theory hashtable map

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

我的问题是,你知道任何C++"标准"哈希表实现提供更好的性能(O(1))吗?类似于Java API中Hashtable类中可用的内容.

Chr*_*ung 78

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

如果您使用C++ 03有TR1,您可以访问类std::tr1::unordered_mapstd::tr1::unordered_set使用相同的头文件(除非你使用GCC,在这种情况下,头是<tr1/unordered_map><tr1/unordered_set>代替).

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

  • 在GCC中,您必须使用标题名称<tr1/unordered_map>和<tr1/unordered_set>.这是GCC的怪癖.:-) (6认同)

Mar*_*som 16

如果您还没有unordered_map或unordered_set,则它们是boost的一部分.
这是两者的文档.