它们在C++中有什么区别

what are the differences between these in C++?

本文关键字:什么 区别 C++      更新时间:2023-10-16

我是一个java迷,但我现在必须为一个项目使用C++。我打算在c++中为您提供一种java hashmap类型的特性。在谷歌上搜索后,我发现C++STL库中不存在哈希映射/哈希表。但我发现了这些数据类型:map、unordered_map、unorderd_set和hash_map。hash_map是微软的特定dll/库,其余部分在STL下使用。我必须使用IBM XL C/C++编译器。所以我不能使用microsoft/boost,因为我的公司不推荐它们。所有我必须使用STL特定。请提供有关这些收藏的一些信息。如果我必须选择hashmap功能,那么在这些STL细节中,什么是最好的?提前谢谢。

unordered_map相当于java的HashMap,是一个哈希映射,所以它可能就是您想要的。

map相当于java中的TreeMap。它被实现为一个红黑树。

unordered_set相当于java的HashSet。它只包含密钥,而不包含成对的(key,value)

你读过维基百科关于C++中关联容器的页面吗?

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

如果您可以提供密钥的顺序,也可以考虑使用std::map,即使在旧的C++03标准中也可以使用它。