C++ std::hash_map:键的作用是什么

C++ std::hash_map: What is the key's role

本文关键字:作用 是什么 std hash C++ map      更新时间:2023-10-16

mapshash_maps都设计成容纳pairs<key, data>。我很清楚为什么映射应该有一个键来排序(更准确地说:树),但我不明白为什么hash_maps需要一个键,为什么它的数据不能单独被散列并放入哈希表中?

我既没有在文档中找到答案,也没有在网上搜索。

std::unordered_set完全按照您描述的方式工作。然而,有时您想要从一个数据块映射到另一个数据块;这就是std::unordered_map发挥作用的地方

走向碗柜。拿出电话簿,查一个号码。它有一个名字和数字之间的映射

您正在寻找set,其中一个键也是data。

c++提供了一些不同的风格:set, unordered_set等…

哈希映射,也称为Unordered Map,使用KEYHASH作为桶或槽的index。换句话说,任何哈希表都需要一个哈希函数来将index计算到桶或槽的数组中,从中可以找到正确的值。这些index是哈希表的Key,在最佳情况下用于在O(1)时间内访问数据。

如果您想使用数据本身作为键,则合适的容器是std::setstd::unordered_set。map既包含键又包含值;std::mapstd::unordered_map的区别在于数据的组织方式;std::map按键排序,std::unordered_map按键散列。