c # équivalent pour C++ vecteur ou deque

je suis presque certain que cela devrait être un duplicata mais j'ai cherché pendant un certain temps et n'ai pas pu trouver la réponse. Que dois-je utiliser en C# Pour remplacer c++ vector et deque efficace. C'est-à-dire que j'ai besoin d'une structure qui supporte l'indexation directe de manière efficace et qui supporte aussi supprimer de l'une ou des deux extrémités(en fonction du vecteur ou du cas deque) de manière efficace.

en java j'utilise habituellement ArrayList au moins pour vecteur mais pour C # j'ai trouvé ce source que les états: ArrayList resizes dynamically. As elements are added, it grows in capacity to accommodate them. It is most often used in older C# programs.. Alors, quelle est la nouvelle façon de faire cela? Et encore une fois, que dois-je faire pour l'affaire deque?

20
demandé sur Ivaylo Strandjev 2013-03-24 17:39:11

3 réponses

il n'y a pas de conteneur Deque intégré, mais il y a plusieurs implémentations disponibles.

Voici un bon de Stephen Cleary. Ceci permet aux opérations O (1) d'indexer et aussi d'Insérer Au début et d'ajouter à la fin.

l'équivalent en C du vecteur est List<T>. L'accès indexé est O(1), mais l'insertion ou la suppression est O (N) (autre que L'insertion à la fin, qui est O (1)).

18
répondu Matthew Watson 2013-03-24 13:57:13

C# vector, un bon candidat est System.Collection.Generic.List comme d'autres l'ont mentionné.

Le plus proche de la deque en C++ serait System.Collection.Generic.LinkedList qui est une liste doublement chaînée.

9
répondu Dale Wick 2014-11-28 17:41:48

Considérer System.Collections.Generic.List et autres System.Collection.Generic ils servent le même but que leur C++ équivalents.

En outre, il pourrait y avoir plus de conteneurs pour vous. Look ici.

3
répondu bash.d 2013-03-24 13:42:37