maps
和hash_maps
都设计为pairs
<key, data>
。我很清楚为什么地图应该有一个关键进行排序(更确切地说是树形),但我不明白为什么hash_maps需要一个键,为什么不能单独对数据进行哈希处理并将其放入哈希表? / p>
我无法在文档中找到答案,也无法在网上搜索。
答案 0 :(得分:4)
std::unordered_set
正如您所描述的那样工作。但是,有时您希望从一个数据映射到另一个数据;这就是std::unordered_map
发挥作用的地方。
答案 1 :(得分:4)
走到橱柜。拿出电话簿并查找一个号码。它有一个名称和数字之间的映射
答案 2 :(得分:0)
您正在寻找set,其中一个键也是数据。
C ++提供了一些不同的风格:set,unordered_set等......
答案 3 :(得分:0)
Hash Map也称为Unordered Map
,使用HASH
的{{1}}作为存储区或插槽的KEY
。换句话说,任何哈希表都需要哈希函数来计算一个桶或槽数组中的index
,从中可以找到正确的值。这些index
是哈希表的密钥,用于访问O中的数据( 1)时间最好的情况。
答案 4 :(得分:0)
如果您想将数据本身用作密钥,则相应的容器为std::set
或std::unordered_set
。地图包含键和值; std::map
和std::unordered_map
之间的差异在如何数据的组织中; std::map
按键排序,键std::unordered_map
哈希。