我正在寻找一个在C++中与C#中的HashTable或Dictionary实现类似功能的实现。STL中是否包含此类对象,如何使用它?
实际上,为了与.NET的Dictionary/Hashtable完全相同,您需要使用hash_map或unordered_map(std::map
实现为二叉树),hash_map
是SC++L的扩展。我知道的大多数编译器都有hash_map
,而且显然boost直到C++0x在所有编译器中可用之前都有unordered_map
,因此您应该能够轻松使用它。
STL有std::map
std::map
可以胜任。 - gnudstd::map
可以用来构建字典。通常情况下,std::map
使用搜索树实现,而不是哈希表。这意味着查找和插入具有不同的性能特征,与C#中的HashMap
相比,在非常大的映射中,平均查找速度会变慢,特别是如果映射中的对象在内存中分散的情况下。std::tr1::unordered_map
和std::tr1::unordered_multimap
,它们通常使用哈希表实现。如果你的编译器没有提供这些库,可以使用来自http://www.boost.org/的实现。sparse_hash
。