Dans le cas de vecteurs: La notation d'indice n'insère pas - elle écrase.
Ce reste de ce post distille les informations de l'article 1-5 de Effective STL. Si vous connaissez la portée de vos données avant la main - et que la taille est fixe - et que vous n'insérez pas à des emplacements qui contiennent des données au-dessus - alors vous pouvez utiliser insert dans des vecteurs sans effets secondaires désagréables .
Cependant, dans les insertions cas général de vecteurs ont des implications telles que le décalage des membres vers le haut et la mémoire double ou de épuisée (ce qui provoque un flot de copies provenant des objets de l'ancien vecteur à des emplacements dans le nouveau vecteur) lorsque vous faites ad hoc insertions . Les vecteurs sont conçus pour quand vous connaissez les caractéristiques de localité de vos données.
Les vecteurs viennent avec une fonction de membre d'insertion ... et cette fonction est très intelligente avec la plupart des implémentations en ce qu'elle peut déduire des optimisations des itérateurs votre approvisionnement. Tu ne peux pas utiliser ça?
Si vous souhaitez effectuer des insertions de données ponctuelles, vous devez utiliser une liste. Peut-être pouvez-vous utiliser une liste pour collecter les données, puis, une fois finalisée, remplir un vecteur en utilisant le constructeur basé sur l'intervalle ou basé sur la plage?
Quelle sorte de conteneur? Il y a des raisons pour le comportement de 'std :: map' et' std :: vector'; quel est ton contenant le plus? –
Re: votre édition. Cela dépend toujours de ce que fait votre classe. Le comportement de la carte est plutôt unique en C++, son 'operator []' fournit une fonctionnalité très spécifique. – UncleBens