我是C#的新手,我想了解使用Dictionary.Values
属性的内存和时间开销是多少。 Here我对算法时间复杂度规范或内存复杂性一无所知?我看错了地方还是在C#规范中未定义?
附:我来自C ++ bg。
在C#规范中未定义吗?
它没有在C#规范中定义,因为它不是C#特性 - 它是一个框架实现细节。
.Values
在第一次被要求时被懒惰地实例化;之后,分发现有价值。所以是的,在第一次使用时可能会分配一些内存。但是,它不包含值的快照副本,因此:这不是一个昂贵的分配。它只包含一个返回父字典实例的引用。
private Dictionary<TKey, TValue> dictionary;
实际上是ValueCollection<TKey, TValue>
中唯一的一个领域。它本质上是一个外观,提供相同数据的以价值为中心的视图。
关于时间复杂度:Dictionary几乎等同于hashmap。因此,读取项目可能是O(1)。对于插入项目,它取决于情况(因为可能的内存分配)。它是O(1)或O(n)。