Je pensais que les tableaux dynamiques remplaçaient les vecteurs dans D, mais il semble qu'ils n'aient pas de fonction de suppression (uniquement les tableaux associatifs), ce qui est plutôt une limitation pour un vecteur, donc je me demande si j'ai bien compris. Si un ont un tableau comme suit,Vecteurs et tableaux dynamiques en D
uint[] a;
a.length = 3;
a[0] = 1;
a[1] = 2;
a[2] = 3;
la seule façon dont je l'ai trouvé pour enlever, par exemple, le deuxième élément est,
a = a[0..1] ~ a[2];
Mais cela ne semble pas juste (mais peut-être seulement parce que je ne comprends pas encore tout cela). Y a-t-il donc un vecteur et existe-t-il un autre moyen de supprimer un élément d'un tableau dynamique?
Merci.
Il est vrai que tableau serait probablement mieux si ce que vous cherchez vraiment est un vecteur, puisque RAID ne pas redimensionner son tableau interne à chaque fois que vous ajoutez ou supprimez quoi que ce soit à/de il. –
@Jonathan: Savez-vous si c'est une exigence de la spécification de la langue, ou est-ce que la mise en œuvre est définie? C'est-à-dire qu'un compilateur peut-il implémenter le tableau intégré comme 'std.container.Array'? –
Je ne connais pas les exigences exactes. Le compilateur a une certaine marge de manœuvre, mais je doute beaucoup que ce soit le cas (et je ne pense pas qu'il le devrait) allouer le double de la mémoire dont il a besoin dans le cas général. Les tableaux possèdent une propriété de capacité qui vous indique le nombre d'éléments que vous pouvez ajouter avant de devoir être réaffectés, et si vous jouez avec, vous pouvez voir qu'il y a définitivement de la mémoire supplémentaire, mais il est probable que un peu de mémoire si elle essayait de garder autant de mémoire que Array. http://www.digitalmars.com/d/2.0/arrays.html –