我正在寻找C ++中的HashTable或Dictionary实现,它具有与C#中类似的功能? STL是否包含这样的对象以及如何使用它?
答案 0 :(得分:11)
实际上,要与.NET的Dictionary / Hashtable完全相同,你想要的是hash_map或unordered_map(std::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_map
和std::tr1::unordered_multimap
,它们通常使用哈希表来实现。如果您的编译器不提供这些库,则可以使用http://www.boost.org/中的实现。
另一种选择是Google的sparse_hash
。
答案 3 :(得分:2)
我相信你正在寻找map
。有关详情,请参阅here。