-4

当涉及到 C# 时,我知道哈希表和字典之间的区别。

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

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

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

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

4

2 回答 2

10

当涉及到 c# 时,我知道哈希表和字典之间的区别。

我要让你相信即使在 C# 中你也不懂哈希表和字典。

字典是一种抽象数据类型。字典可以引用任何提供键值映射的数据结构。

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

哈希表是一种字典,因为哈希表提供了键值映射。然而,并不是所有的字典都是哈希表;有无数种方法可以创建提供键值映射的数据类型,例如使用二叉搜索树或排序数组,键在偶数索引中,值在奇数索引中。

换句话说,当您谈论 Dictionary 时,您正在指定一个接口(数据类型从外部看起来应该是什么样子),而当您谈论 HashTable 时,您正在指定一个实现(数据应该如何实际存储) .

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

于 2013-09-09T04:23:39.190 回答
0

C 中的哈希表 哈希的想法是将条目(键/值对)分布在一个桶数组中。

index = f(key, array_size)

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

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

于 2013-09-09T04:18:27.920 回答