两者都maps
被设计hash_maps
成这样pairs
。<key, data>
我很清楚为什么地图应该有一个用于排序的键(更准确地说:树),但我不明白为什么 hash_maps 需要一个键,为什么不能单独对数据进行散列并放入哈希表中?
我在文档中或在网上搜索都找不到答案。
走到柜子边。拿出电话簿,查一个号码。它具有名称和数字之间的映射
std::unordered_set
完全按照您描述的方式工作。但是,有时您想从一个数据映射到另一个数据;这就是std::unordered_map
发挥作用的地方。
Hash Map 也称为Unordered Map
使用 a作为buckets 或 SlotsHASH
的一个。换句话说,任何 Hash Table 都需要一个散列函数来计算一个buckets 或 slots 的数组,从中可以找到正确的值。这些是哈希表的键,在最佳情况下用于在 O(1) 时间内访问数据。KEY
index
index
index
如果要使用数据本身作为键,则适当的容器是std::set
或std::unordered_set
。一个map同时拥有一个key和一个value;std::map
和之间的区别在于std::unordered_map
数据的组织方式;std::map
按键排序,按键std::unordered_map
哈希。
您正在寻找set,其中键也是数据。
C++ 提供了一些不同的风格:set,unordered_set等......