C ++中的字典/ HashTable对象?

时间:2010-04-27 12:56:55

标签: c++ dictionary

我正在寻找C ++中的HashTable或Dictionary实现,它具有与C#中类似的功能? STL是否包含这样的对象以及如何使用它?

4 个答案:

答案 0 :(得分:11)

实际上,要与.NET的Dictionary / Hashtable完全相同,你想要的是hash_mapunordered_mapstd::map被实现为二叉树),{{1} }是SC ++ L的扩展。我知道的大多数编译器都带有hash_map,并且显然有hash_map,直到C ++ 0x在所有编译器中都可用,所以你应该能够毫无困难地使用它。

答案 1 :(得分:5)

STL有std::map

答案 2 :(得分:3)

STL std::map可用于构建字典。 std::map通常实现为搜索树,而不是哈希表。这意味着查找和插入都具有与C#HashMap不同的性能特征 - 对于非常大的地图,平均查找会更慢,特别是如果地图中的对象在内存中碎片化。

在新c ++标准的TR1中,您有std::tr1::unordered_mapstd::tr1::unordered_multimap,它们通常使用哈希表来实现。如果您的编译器不提供这些库,则可以使用http://www.boost.org/中的实现。

另一种选择是Google的sparse_hash

答案 3 :(得分:2)

我相信你正在寻找map。有关详情,请参阅here