C+中的Dictionary/HashTable对象+;? 我正在寻找一个C++中的哈希表或字典实现,它与C语言中的一个函数类似。STL是否包含这样的对象?我将如何使用它?

C+中的Dictionary/HashTable对象+;? 我正在寻找一个C++中的哈希表或字典实现,它与C语言中的一个函数类似。STL是否包含这样的对象?我将如何使用它?,c++,dictionary,C++,Dictionary,我相信您正在寻找映射。更多信息请参见。STL实际上与.NET的字典/哈希表完全相同,您需要的是或(std::map实现为二叉树),hash\u map是SC++L的扩展。不过,我知道的大多数编译器都附带了hash\u map,在C++0x在所有编译器中都可用之前,boost显然具有无序映射,因此您应该能够毫无困难地使用它。STLstd::map可以用于构建字典std::map通常作为搜索树而不是哈希表实现。这意味着查找和插入与C#的HashMap具有不同的性能特征-对于非常大的映射,平均查找速度

我相信您正在寻找
映射。更多信息请参见。

STL实际上与.NET的字典/哈希表完全相同,您需要的是或(
std::map
实现为二叉树),
hash\u map
是SC++L的扩展。不过,我知道的大多数编译器都附带了
hash\u map
,在C++0x在所有编译器中都可用之前,boost显然具有无序映射,因此您应该能够毫无困难地使用它。

STL
std::map
可以用于构建字典
std::map
通常作为搜索树而不是哈希表实现。这意味着查找和插入与C#的
HashMap
具有不同的性能特征-对于非常大的映射,平均查找速度将较慢,特别是如果映射中的对象在内存中被分割

<>在新的C++标准的Tr1中,您有<代码> STD::Tr1::unOrdEdMyPox<代码>和<代码> STD::Tr1::无序的MultIMAP < /COD>,这通常使用哈希表来实现。如果编译器未提供这些库,则可以使用中的实现


还有一种选择是谷歌的。

C++没有哈希映射这样的容器,在C++0x中也不会。在C++中哈希表的名称是无序的,即,映射,SE,AH,C++标准过程。Rome burns时,关于哈希表类名称的争吵。std::map中的查找本身并不比hash_映射中的查找慢。只有hash_映射的渐近性能是O(1)vs.O(logn),但是对于足够大的值1,logn可能更快。事实上,这已经足够了,找到一个好的散列函数比实现一个正确的运算符要困难得多。你经常说,但并不总是,我的错。然而,这通常意味着,大多数人使用字典时,使用正确的散列函数,有大约1000个条目。根据工作领域和公司内部的技能水平,这可能确实不太可能。也许“通常会慢一些”有点苛刻。我的观点主要是它们有不同的性能特征,也有类似于谷歌的代码> DeSEH-HASHMAP/<代码>但没有限制KE.S.map是一个平衡树,而不是散列容器。@乔-问题是针对C++ STL中的hash map或字典类,所以<代码> STD::MAP< /Cord>适合账单。@ GNUD:OP也说“它的功能与C#中的类似”,如果您谈论的是性能特征的话,它只适合无序的#映射。