将哈希表合并到数组中
|
我想将2个或多个哈希表合并在一起。最终形式是什么都没有关系,只要我可以迭代它即可。这里的最终形式是一个数组。
所以我有一个无符号的长只要键,值是一个字符串,整数对。每个键都映射到一个垃圾箱,每个垃圾箱可以有collisons。与其将整个哈希表复制到数组中,我不需一遍又一遍地复制它,这样一来,我就不需要遍历整个数组。首先,我将第一个哈希表的第一个bin复制到Pairs数组中,并将字符串和int作为其字段(忽略键)\'
就像是
Class Pair{
char* s;
int frequency;
};
要将其添加到数组中,我将具有以下内容...
Pair pair
pair.s=string of the hashtable value
pair.s=integer of the hashtable value
array[index]=pair;
然后要将第二个哈希表的第一个bin合并到数组中,我首先检查哈希表的值的字符串是否已经在数组中,如果是的话,我只是更新与该字符串对应的类对的int部分在数组中,如果不是,则将其添加到数组中。
然后我继续下一个bin。将第一个哈希表的第二个bin复制到数组中。然后,而不是遍历整个数组以检查第二个hashtable的第二个bin是否在数组中,我开始搜索从第二个bin的第一个元素插入到数组的数组索引开始。
问题甚至在于迭代该方法仍然很漫长,因为每个垃圾箱可以包含1000多个Collisons,并且有成千上万个垃圾箱要经过。我想避免这种情况。我一直在想,因为每个键(很长)对于每个字符串都是唯一的,所以如果要在数组中将该键号的偏移量设置为1,如果不是,则将偏移量设置为0。这样,我只需要遍历数组(如果它在数组中)。问题是很长很长。我无法分配具有这么多位的数组...
还有另一种方法吗?
没有找到相关结果
已邀请:
1 个回复
剃摧庭峨僳