web-dev-qa-db-fra.com

Quelle est la version C ++ de ArrayList de Java

Revenons simplement à l’utilisation de C++ et à l’essai de conversion d’un simple Java que j’ai écrit récemment.

Quel est l'équivalent préféré de Java ArrayList en C++?)

65
interstar

Utilisez le std::vector class de la bibliothèque standard.

76
SLaks

Quelques points supplémentaires concernant l’utilisation de vector ici.

Contrairement à ArrayList et Array en Java, vous n'avez rien à faire de particulier pour traiter un vector comme un tableau - le stockage sous-jacent en C++ est garanti comme étant contigu et indexable efficacement.

Contrairement à ArrayList, un vector peut efficacement contenir des types primitifs sans encapsulation en tant qu'objet à part entière.

Lors de la suppression d'éléments d'un vector, sachez que les éléments situés au-dessus de l'élément supprimé doivent être abaissés pour préserver le stockage contigu. Cela peut coûter cher pour les gros conteneurs.

Assurez-vous que si vous stockez des objets complexes dans vector que leur constructeur de copie et leurs opérateurs d’affectation sont efficaces. Sous les couvertures, C++ STL les utilise lors de l’entretien des conteneurs.

Des conseils sur la reserve() ing initialisation du stockage (c'est-à-dire lors de la construction du vecteur ou du temps d'initialisation) afin de minimiser la réallocation de la mémoire sur les extensions ultérieures sont transférés de Java en C++.

50
Steve Townsend