c#等价于c ++ vector或deque

izo*_*ica 23 c# c++ vector deque

我几乎可以肯定这应该是重复但我搜索了一段时间,但找不到答案.我应该在C#中使用,以取代C++向量和deque 有效.也就是说,我需要一种能够高效地支持直接索引的结构,并且还支持以有效的方式从一端或两端(取决于向量或双端情况)进行删除.

在java中,我通常使用ArrayList至少用于向量,但对于C#,我发现这个源表明: ArrayList resizes dynamically. As elements are added, it grows in capacity to accommodate them. It is most often used in older C# programs..那么新的方法是什么?我又如何为deque案件做些什么呢?

Mat*_*son 18

没有内置的Deque容器,但有几种可用的实现.

来自Stephen Cleary的这是一个很好的.这提供了O(1)操作来索引,也可以在开头插入并在末尾追加.

与Vector相当的C#是List<T>.索引访问是O(1),但插入或删除是O(N)(除了最后插入,即O(1)).

  • @IvayloStrandjev它不是一个双向链表,它是一个向量. (4认同)

小智 9

对于C#vector,一个好的候选人System.Collection.Generic.List就像其他人提到的那样.
在C++中最接近deque的System.Collection.Generic.LinkedList是双链表.

  • +1,如果你不需要访问中间的元素,链接列表似乎是最好的双端解决方案. (5认同)
  • 推荐`LinkedList`作为`deque`替换是不正确和不准确的.它们是完全不同的野兽(前者没有连续的分配),绝对不可替代. (3认同)
  • @MahmoudAl-Qudsi 最终用户在“LinkedList”和双端队列之间看到什么区别? (3认同)
  • @NetMage 速度。 (2认同)