如何从具有重复值的数组创建哈希

时间:2016-10-18 16:33:29

标签: c++ c++11 hash unordered-map

我正在解决一个问题,其中一部分要求我将数组转换为哈希表,但该数组可能包含重复项。

现在,如果没有重复,我可以简单地完成: -

unordered_map<int,int>hash;

for(int i=0; i<size; i++){
hash[arr[i]] = arr[i];
}

但我不确定在重复键和值的情况下该怎么做。 任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

这取决于你想要达到的目标。使用std::unordered_multimap。或者计算重复次数并将其存储在地图的值中。

答案 1 :(得分:0)

对于非平凡的哈希;散列的实例通常与散列一起存储。

这允许在散列后测试==<。如果发生碰撞hash(a) == hash(b)&amp;&amp; a != b,然后你要么修改哈希,以便不再存在冲突,要么哈希 - >向量;或者2的某种组合。完全取决于您想要使用哈希的内容。