繁体   English   中英

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

[英]what are the differences between these in C++?

我是Java的忠实粉丝,但我现在必须为一个项目使用C ++。 我打算向您介绍一种Java Hashmap类型的C ++功能。 谷歌搜索后,我发现C ++ STL库中不存在hashmap / hashtable。 但是我发现了这些数据类型:map,unordered_map,unorderd_set和hash_map。 hash_map是Microsoft的特定dll /库,其余的则在STL下使用。 我必须使用IBM XL C / C ++编译器。 所以我不能使用Microsoft / Boost,因为我的公司不推荐它们。 我只需要使用STL专用。 请提供有关这些收藏的一些信息。 如果必须选择哈希图功能,那么在这些STL细节中,什么是最好的? 提前致谢。

unordered_map等效于Java的HashMap ,并且是一个哈希映射-因此可能是您所追求的。

map等效于Java中的TreeMap 它被实现为一棵红黑树

unordered_set等效于Java的HashSet 它仅包含键,而不包含(key,value)

您是否阅读了Wikipedia上有关C ++关联容器的页面?

如果要使用真正的哈希表(带有提供哈希码的键,但键之间没有顺序),则可以使用C ++ 2011 std :: unordered_map模板。 您需要一个足够新的编译器才能在这方面与C ++ 11兼容。

如果可以提供按键顺序,请考虑也使用std :: map ,即使在较早的C ++ 03标准中也可以使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM