散列表和C中的字典有什么区别

时间:2013-09-09 04:02:32

标签: c

我知道在C#中哈希表和字典之间的区别。

  • 哈希表类型优化查找。它计算您添加的每个键的哈希值。然后它使用此哈希代码非常快速地查找元素。

  • Dictionary类型提供快速查找,其中包含获取值的键。有了它,我们使用任何类型的键和值,包括整数和字符串。

Dictionary对象在C#中提供类型安全,而哈希表则不提供。

我想知道在C语言方面是否存在类似的差异?

2 个答案:

答案 0 :(得分:8)

  

我知道哈希表与字典之间在c#上的区别。

即使在C#中,我也会说服你不理解哈希表和词典。

字典是Abstract Data Type。字典可以指任何提供值映射关键字的数据结构。

另一方面,哈希表是一个具体的数据结构。散列表使用散列函数将键转换为内部数组的索引并具有冲突解决方案。

哈希表是一种词典,因为哈希表提供了值映射的关键。但是,并非所有Dictionary都是哈希表;有很多种方法可以创建一个提供值映射关键的数据类型,例如二进制搜索树或带有偶数索引和奇数索引值的键的排序数组。

换句话说,当你谈论Dictionary时,你指的是一个接口(数据类型应该从外面看起来是什么样的),而在讨论HashTable时,你指的是一个实现(数据应该如何实际存储)。

C#通过在其文档中为其Dictionary类指定特定的具体数据结构来稍微混淆这一点,但这不应该使您不理解这两个概念之间的区别。 C在其标准库中既没有字典也没有哈希表实现,但是Dictionary和Hash Table之间的区别与语言无关。

答案 1 :(得分:0)

C中的哈希表 散列的想法是在一系列桶中分配条目(键/值对)。

index = f(key, array_size)

C中的字典 C编程语言提供了一个简单的字典(哈希表)数据结构。

所以唯一的区别是它显示哈希表使用键/值对但字典使用其数据结构。