2

两者都maps被设计hash_maps成这样pairs<key, data>我很清楚为什么地图应该有一个用于排序的键(更准确地说:树),但我不明白为什么 hash_maps 需要一个键,为什么不能单独对数据进行散列并放入哈希表中?

我在文档中或在网上搜索都找不到答案。

4

5 回答 5

4

走到柜子边。拿出电话簿,查一个号码。它具有名称和数字之间的映射

于 2013-03-24T09:39:09.887 回答
4

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

于 2013-03-24T09:35:37.767 回答
0

Hash Map 也称为Unordered Map使用 a作为buckets 或 SlotsHASH的一个。换句话说,任何 Hash Table 都需要一个散列函数来计算一个buckets 或 slots 的数组,从中可以找到正确的值。这些是哈希表的键,在最佳情况下用于在 O(1) 时间内访问数据。KEYindexindexindex

于 2013-03-24T09:41:04.197 回答
0

如果要使用数据本身作为键,则适当的容器是std::setstd::unordered_set。一个map同时拥有一个key和一个value;std::map和之间的区别在于std::unordered_map数据的组织方式std::map按键排序,按键std::unordered_map哈希。

于 2013-03-24T12:44:29.920 回答
0

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

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

于 2013-03-24T09:33:04.090 回答