【问题标题】:difference in implementation of map and dictionarymap和dictionary实现的区别
【发布时间】: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


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2016-12-26
    • 2016-05-10
    相关资源
    最近更新 更多