77 votes

Équivalent C # du vecteur C ++, avec mémoire contiguë?

Quel est l'équivalent C # du vecteur C ++?

Je recherche cette fonctionnalité:

Avoir un tableau dynamique de mémoire stockée de manière contiguë qui ne nuit en rien aux performances par rapport aux baies standard.

Je cherchais et ils disent .NET equivalent to the vector in C++ is the ArrayList , donc:

ArrayList a-t-il cette fonctionnalité de mémoire contiguë?

92voto

Darin Dimitrov Points 528142

Vous pouvez utiliser un List<T> et quand T est un type de valeur, il sera alloué en mémoire contiguë, ce qui ne serait pas le cas si T est un type de référence.

Exemple:

 List<int> integers = new List<int>();
integers.Add(1);
integers.Add(4);
integers.Add(7);

int someElement = integers[1];
 

16voto

Bala R Points 57552

utilisez List<T> . En interne, il utilise des tableaux et les tableaux utilisent une mémoire contiguë.

16voto

Matteo Mosca Points 3920

Tout d’abord, éloignez-vous de Arraylist ou Hashtable . Ces classes doivent être considérées comme obsolètes au profit des génériques. Ils sont toujours dans la langue pour les besoins de l'héritage.

Maintenant, ce que vous recherchez est la classe List<T> . Notez que si T est un type de valeur, vous aurez une mémoire contiguë, mais pas si T est un type de référence, pour des raisons évidentes.

13voto

Armen Tsirunyan Points 59548

C # a beaucoup de types de référence. Même si un conteneur stocke les références de manière contiguë, les objets eux-mêmes peuvent être dispersés dans le tas.

5voto

rjdevereux Points 535

Il semble que CLR / C # obtienne bientôt un meilleur support pour Vector <>.

http://blogs.msdn.com/b/dotnet/archive/2014/04/07/the-jit-finally-proposed-jit-and-simd-are-getting-married-married.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X