Подтвердить что ты не робот

С# эквивалент для вектора С++ или deque

Я почти уверен, что это должен быть дубликат, но я искал какое-то время и не мог найти ответ. Что мне следует использовать в С# для замены вектора С++ и deque эффективно. То есть мне нужна структура, которая поддерживает прямое индексирование эффективно, а также поддерживает удаление с одного или обоих концов (в зависимости от вектора или случая дека) в эффективном режиме.

В java я обычно использую ArrayList хотя бы для вектора, но для С# я нашел этот источник, который гласит: ArrayList resizes dynamically. As elements are added, it grows in capacity to accommodate them. It is most often used in older C# programs.. Итак, каков новый способ сделать это? И снова, что я делаю для дела deque?

4b9b3361

Ответ 1

Нет встроенного контейнера Deque, но доступно несколько реализаций.

Здесь хороший от Стивена Клири. Это обеспечивает операции O (1) для индексации, а также для вставки в начале и добавления в конце.

С#, эквивалентный Vector, List<T>. Индексированный доступ - O (1), но вставка или удаление - O (N) (кроме Inserting в конце, который является O (1)).

Ответ 3

Рассмотрим System.Collections.Generic.List и другие из System.Collection.Generic, они выполняют ту же цель, что и их эквиваленты C++.
Кроме того, для вас может быть больше контейнеров. Посмотрите здесь.