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?
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)).
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.