【发布时间】:2011-08-10 03:23:24
【问题描述】:
我知道在使用地图或使用字典方面有什么区别,但我想知道为什么 .NET 中的 Dictionary<TKey, TValue> 应该使用阅读here,一个隐藏的链表,我知道std::map<K,T> (C++) 被实现为红黑树。
为什么它们在幕后不一样,性能是否存在一些差异(我知道 C++ 数据结构已针对这一点进行了优化)或者为什么 .NET 字典实际上是幕后的链表和C++ std::map 然后是红黑树,据我所知,它是完全不同的数据结构,主要用于完全不同的目的。
也许这两件事有不同的目的,也许我只是不知道。
谁能澄清一下?
【问题讨论】:
-
您链接到的问题仅表明在
Dictionary中使用了 链表,而不是说它是 链表。有一个重要的区别。 :) -
@jalf: 嗯,有趣的点...
-
为了详细说明 jalf 的观点,链表是一种(根据我的经验通常很差)处理冲突的方法,因为不同键的哈希值巧合地折叠到同一个哈希桶。在此模型中,哈希表实际上是一个链表数组,但添加、删除元素、调整表大小等方式结合了散列以加快索引速度,并旨在使每个列表尽可能短。
标签: .net c++ data-structures