在c中实现哈希映射

时间:2013-08-05 07:00:28

标签: c++ c hashmap hashcode

我需要阻止c中的键和值,就像我们在c ++中使用map一样。

请分享最简单的例子,在c中存储商店中的唯一键和值。 key我是任何字符串,值将是字符串。

由于

1 个答案:

答案 0 :(得分:3)

创建一个哈希映射需要一些工作,但绝对是一件有趣的事情。

构建哈希映射的一般方法是创建包含键和值的名为 buckets 的数组。但是,这种结构无法处理冲突。当散列函数将不同的密钥分配给相同的值时,可能会出现两个值之间的冲突。为解决此问题,将第三个字段(通常是指针)添加到存储桶中。发生冲突时,新值将添加到第三个字段指向的数据结构中。通常,使用链表或二叉树。有关如何解决冲突的更多信息,请阅读此link

上述哈希映射结构的示例。请注意,索引153上存在冲突:Hash map Structure

要访问哈希表,会将自定义哈希函数应用于密钥。散列函数的返回是一个标识数组索引位置的整数。最后,检查密钥(用于访问元素以及存储在散列函数返回的索引中的数组中)是否匹配。如果匹配,则找到正确的元素。

这只是一个示例,您可以找到实现哈希映射的不同方法。

我建议您查看这些exampleexmaple_2。此外,这个问题已经被问到here

This是一个教程,它逐步解释如何在C中创建哈希映射。