c#等价于c ++ vector或deque
我几乎可以肯定这应该是重复但我搜索了一段时间,但找不到答案。 我应该在C#中使用什么来有效地替换C ++ vector和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.
ArrayList resizes dynamically. As elements are added, it grows in capacity to accommodate them. It is most often used in older C# programs.
。 那么新的方法是什么? 再次,我该如何处理deque案件?
没有内置的Deque容器,但有几种可用的实现。
斯蒂芬克利里这是一个很好的 。 这提供了O(1)操作来索引,也可以在开头插入并在末尾追加。
与Vector相当的C#是List
。 索引访问是O(1),但插入或删除是O(N)(除了最后插入,即O(1))。
对于C# vector
,一个好的候选者是System.Collection.Generic.List
正如其他人提到的那样。
C ++中最接近deque的是System.Collection.Generic.LinkedList
,它是一个双向链表。
考虑System.Collections.Generic.List
和System.Collections.Generic.List
其他C++
,它们与C++
等价物具有相同的用途。
此外,您可能还有更多容器。 看这里