Il y a std::vector qui est un wrapper autour d'un tableau, mais il peut se développer et se faire automatiquement. Cependant, c'est une opération très coûteuse, donc si vous allez faire beaucoup d'opérations d'insertion ou de suppression, n'utilisez pas de vecteur. (Vous pouvez utiliser la fonction de réserve pour réserver une certaine quantité d'espace)
est une liste chaînée qui a des temps d'insertion et de suppression beaucoup plus rapides, mais l'itération est plus lente car les valeurs ne sont pas stockées dans la mémoire contiguë, laquelle signifie que le calcul d'adresse est beaucoup plus complexe et que vous ne pouvez pas tirer parti du cache des processeurs lors de l'itération sur la liste.
Le principal avantage par rapport au vecteur ou au deque est que les éléments peuvent être ajoutés ou supprimés de n'importe où dans la liste à un coût relativement bas.
En guise de compromis, il existe std::deque, qui fonctionne de manière similaire à un vecteur, mais en interne, ils sont très différents. Le stockage de deque ne doit pas être contigu, il peut donc être divisé en blocs, ce qui signifie que lorsque la deque se développe, il n'a pas besoin de réaffecter l'espace de stockage pour l'ensemble de son contenu. L'accès est légèrement plus lent et vous ne pouvez pas faire d'arithmétique de pointeur pour obtenir un élément.
En fait, vous pouvez itérer sur un tableau. L'itérateur de départ est '_anArrayOfBase', et l'itérateur de fin est' _anArrayOfBase + max', ce qui est tout ce dont vous avez besoin pour l'itération de style C++. Mais vous avez absolument raison à propos de l'expansion. –