C#,. NET4.
我们有一些性能关键代码导致一些问题.它是一种经过修改的队列,实际上是由List支持的.我想知道在索引0处删除元素是多么昂贵.想到的问题是:
我一直认为RemovedAt是O(1)的列表.是这样的吗?
SLa*_*aks 23
List<T>
由一个简单的数组支持,加上一个size
字段,指示该数组的哪个部分实际上正在使用.(为了未来的增长).除非您添加太多元素或调用,否则不会调整数组的大小TrimExcess
.
Remove
是的O(n)
,因为它需要将列表的其余部分向下移动一个.
相反,您可以使用LinkedList<T>
(除非您使用随机访问),或编写自己的列表来跟踪前面的空白部分.
归档时间: |
|
查看次数: |
9406 次 |
最近记录: |