Il y a std::vecteur qui est une enveloppe autour d'un tableau, mais il peut s'étendre et le fera automatiquement. Cependant, c'est une opération très coûteuse, donc si vous avez l'intention de faire beaucoup d'opérations d'insertion ou de suppression, n'utilisez pas un vecteur. (Vous pouvez utiliser la fonction reserve pour réserver une certaine quantité d'espace).
std::liste est une liste chaînée, dont les temps d'insertion et de retrait sont beaucoup plus rapides, mais l'itération est plus lente car les valeurs ne sont pas stockées dans une mémoire contiguë, ce qui signifie que le calcul des adresses est beaucoup plus complexe et que vous ne pouvez pas tirer parti du cache du processeur lorsque vous itérez sur la liste.
Le principal avantage par rapport au vecteur ou au deque est que les éléments peuvent être ajoutés ou retirés de n'importe quel endroit de la liste à peu de frais.
En guise de compromis, il y a std::deque qui, extérieurement, fonctionne de manière similaire à un vecteur, mais qui, intérieurement, est très différent. Le stockage du deque n'a pas besoin d'être contigu, il peut donc être divisé en blocs, ce qui signifie que lorsque le deque grandit, il n'a pas besoin de réallouer 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.