C ++ std :: hash_map:密钥的作用是什么

时间:2013-03-24 09:30:02

标签: c++ hashmap key std

mapshash_maps都设计为pairs <key, data>。我很清楚为什么地图应该有一个关键进行排序(更确切地说是树形),但我不明白为什么hash_maps需要一个键,为什么不能单独对数据进行哈希处理并将其放入哈希表? / p>

我无法在文档中找到答案,也无法在网上搜索。

5 个答案:

答案 0 :(得分:4)

std::unordered_set正如您所描述的那样工作。但是,有时您希望从一个数据映射到另一个数据;这就是std::unordered_map发挥作用的地方。

答案 1 :(得分:4)

走到橱柜。拿出电话簿并查找一个号码。它有一个名称和数字之间的映射

答案 2 :(得分:0)

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

C ++提供了一些不同的风格:setunordered_set等......

答案 3 :(得分:0)

Hash Map也称为Unordered Map,使用HASH的{​​{1}}作为存储区或插槽的KEY。换句话说,任何哈希表都需要哈希函数来计算一个桶或槽数组中的index,从中可以找到正确的值。这些index是哈希表的密钥,用于访问O中的数据( 1)时间最好的情况。

答案 4 :(得分:0)

如果您想将数据本身用作密钥,则相应的容器为std::setstd::unordered_set。地图包含键和值; std::mapstd::unordered_map之间的差异在如何数据的组织中; std::map按键排序,键std::unordered_map哈希。