字典 .Values - 它是否分配了新的内存和时间复杂度

问题描述 投票:3回答:2

我是C#的新手,我想了解使用Dictionary.Values属性的内存和时间开销是多少。 Here我对算法时间复杂度规范或内存复杂性一无所知?我看错了地方还是在C#规范中未定义?

附:我来自C ++ bg。

c# dictionary memory time-complexity
2个回答
9
投票

在C#规范中未定义吗?

它没有在C#规范中定义,因为它不是C#特性 - 它是一个框架实现细节。

.Values在第一次被要求时被懒惰地实例化;之后,分发现有价值。所以是的,在第一次使用时可能会分配一些内存。但是,它不包含值的快照副本,因此:这不是一个昂贵的分配。它只包含一个返回父字典实例的引用。

private Dictionary<TKey, TValue> dictionary;

实际上是ValueCollection<TKey, TValue>中唯一的一个领域。它本质上是一个外观,提供相同数据的以价值为中心的视图。


0
投票

关于时间复杂度:Dictionary几乎等同于hashmap。因此,读取项目可能是O(1)。对于插入项目,它取决于情况(因为可能的内存分配)。它是O(1)或O(n)。

© www.soinside.com 2019 - 2024. All rights reserved.