我试图解决问题,并且我意识到我的解决方案的复杂性高于预期,因为Insert
的{{1}}是O(n)(来源: https://msdn.microsoft.com/en-us/library/sey5k5z4(v=vs.110).aspx)。
我想要的是像
这样的数据结构换句话说,除了更快的插入,我想要List<T>
之类的东西。
答案 0 :(得分:0)
是否可能最终在列表中出现重复项,或者您能否保证您不会两次看到相同的值?您是否需要指定索引,或者您是否期望根据项目的值对事物进行排序?
如果您知道不会重复,或者您不希望在存在重复时将值存储两次,并且您的索引完全基于将项目放在正确的位置值,您可以查看SortedSet<T>
类型。
如果可能存在重复项,但您想手动指定该值,则可以查看SortedDictionary<TKey, TValue>
,其中TKey
值是整数索引。
如果您无法满足其中任何一个条件,那么您将无法实施自己的类型。好消息是你不必从头开始。 LinkedList<T>
类型可以帮助您完成大部分工作。
答案 1 :(得分:0)
它并非完全内置,但您可以尝试一下。 Wintellect power collection有BigList<T>
可以完成这项工作。
https://powercollections.codeplex.com/
与List<T>
相比,它在特定索引处的插入速度更快。我不能告诉你它的确切运作方式,但是它会对元素产生一些偏移,所以就记忆而言,它会更加苛刻。
你也可以找到它作为金块包。
**编辑:**由于@Ryan纠正了我,它有O(log n)索引访问权限。