我正在解决一个问题,其中一部分要求我将数组转换为哈希表,但该数组可能包含重复项。
现在,如果没有重复,我可以简单地完成: -
unordered_map<int,int>hash;
for(int i=0; i<size; i++){
hash[arr[i]] = arr[i];
}
但我不确定在重复键和值的情况下该怎么做。 任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
这取决于你想要达到的目标。使用std::unordered_multimap
。或者计算重复次数并将其存储在地图的值中。
答案 1 :(得分:0)
对于非平凡的哈希;散列的实例通常与散列一起存储。
这允许在散列后测试==
或<
。如果发生碰撞hash(a) == hash(b)
&amp;&amp; a != b
,然后你要么修改哈希,以便不再存在冲突,要么哈希 - >向量;或者2的某种组合。完全取决于您想要使用哈希的内容。