这些在C ++中有什么区别?

时间:2012-02-25 15:28:23

标签: c++ map hashmap set

我是一个很棒的java粉丝,但我现在必须在C ++上为一个项目工作。我打算在c ++中使用java hashmap类的功能。谷歌搜索后发现在C ++ STL库中没有hashmap / hashtable。但我发现了这些数据类型:map,unordered_map,unorderd_set和hash_map。 hash_map是microsoft的特定dll /库,其余在STL下使用。我必须使用IBM XL C / C ++编译器。所以我不能使用microsoft / boost,因为我的公司不推荐它们。我只需要使用STL。请提供有关这些系列的一些信息。如果我必须选择hashmap功能,这些STL细节中最好的是什么?提前致谢。

2 个答案:

答案 0 :(得分:4)

unordered_map相当于java的HashMap,并且是一个哈希映射 - 所以它可能就是你所追求的。

map相当于java中的TreeMap。它实现为red-black tree

unordered_set相当于java的HashSet。它只包含键,而不是(key,value)

答案 1 :(得分:1)

您是否在associative containers in C++上阅读了维基百科的页面?

如果您想要真正的哈希表(使用提供哈希码的密钥,但密钥之间没有顺序),您可以使用C ++ 2011 std::unordered_map模板。在这方面,你需要一个最近足以与C ++ 11兼容的编译器。

如果您可以提供密钥订单,请考虑使用std::map,即使在较旧的C ++ 03标准中也可以使用。{/ p>