我是一个很大的java粉丝,但我现在必须在C++上为一个项目工作。我打算给你一个java hashmap类的C++特性。谷歌搜索后,我发现在C++ STL库中不存在hashmap/hashtable。但是我发现了这些数据类型:map,unordered_map,unorderd_set和hash_map。 hash_map是微软的特定的dll /库,其余的都在STL下使用。我必须使用IBM XL C/C++编译器。所以我不能使用微软/提升,因为我的公司不推荐他们。我必须使用特定的STL。请提供关于这些收藏的一些信息。如果我必须选择hashmap功能,那么在这些STL细节中最好是什么?提前致谢。这些在C++中有什么区别?
回答
您是否看过维基百科的页面associative containers in C++?
如果您想要真正的哈希表(使用提供哈希码的密钥,但键之间没有顺序),您可以使用C++ 2011 std::unordered_map模板。在这方面,你需要一个最近足够支持C++ 11的编译器。
如果您可以提供关键的订单,也可以考虑使用std::map,即使在早期的C++ 03标准中也可以使用。
如果订单无关紧要怎么办?我的意思是,我所需要的仅仅是一个键值对集合,它可以存储键值对,并在需要时检索给定键的值。 – volatNumbers 2012-02-25 15:43:52
如果仅限于C++ 03(不是C++ 11,而不是TR1,不是boost),那么将值与键关联的最简单方法是对该键类型提供一些顺序并使用'std :: map' 。该命令可能对您而言并不重要,但可能很容易提供。 – 2012-02-25 15:47:24
如何提供订单?任何参考请.. – volatNumbers 2012-02-25 15:57:39
unordered_map
相当于java的HashMap
,它是一个哈希映射 - 所以它可能是你以后的样子。
map
相当于java中的TreeMap
。它被实施为red-black tree。
unordered_set
相当于java的HashSet
。它只包含密钥,而不包含(key,value)
- 1. 这些POST命令有什么区别?
- 2. 这些CIL语句有什么区别?
- 3. 这些功能有什么区别?
- 4. 这些选择器有什么区别?
- 5. 这些NGINX模块有什么区别?
- 6. 这些字符有什么区别?
- 7. 这些GAE库有什么区别?
- 8. 这些PHP变量有什么区别?
- 9. 这些os.popen调用有什么区别?
- 10. 这些授权API有什么区别?
- 11. 这些LINQ查询有什么区别?
- 12. 这些意图有什么区别?
- 13. 这些查询有什么区别?
- 14. 这些代码有什么区别?
- 15. 这些#import声明有什么区别?
- 16. 这些np.linalg.norm方法有什么区别
- 17. Objective c中这些@properties有什么区别?
- 18. 这些C函数参数类型有什么区别?
- 19. 这些Objective C方法样式有什么区别?
- 20. 这些C#代码段(Outlook插件)有什么区别?
- 21. 在这些例子中调用'this'有什么区别?
- 22. 在swift中声明这些变量时有什么区别!或()
- 23. 在java中使用这些字符串有什么区别吗?
- 24. printf中%c和%C有什么区别?
- 25. 这两个声明在c中有什么区别?
- 26. 在C++中const的这两个用法有什么区别?
- 27. 这些声明(JavaScript中)有什么区别?
- 28. C++中#import和#include有什么区别?
- 29. C中#define和'='有什么区别?
- 30. C#中CLR和DLR有什么区别?
即使是半感兴趣的第二眼也应该向您透露'unordered_map/set'是一个散列容器。它是C++ 11,Boost和TR1的一部分,其中的任何一个都应该做到这一点。 – 2012-02-25 15:31:56