essayer de copier tous les éléments d'un Si je définis un élément dans Je trouve qu'il est difficile de comprendre ce comportement de Remarque: Je sais que ce n'est pas une manière suggérée de copier sortie: p> vecteur code> à un autre à l'aide d'indexation comme indiqué dans l'extrait de code. Pour autant que je sache, régler / obtenir un élément de vecteur en utilisant Index (je suis au courant de "à" et ses avantages) est autorisé dans
C ++ code>.
vecteur A code> à l'aide de l'index, cela fonctionne comme prévu. Pour
Vecteur B code> également, si push_back est utilisé, cela fonctionne comme prévu. P>
Vecteur code>. p>
vecteur code> car nous avons plusieurs autres options qui sont pratiques et efficaces. P>
3 Réponses :
Si vous souhaitez construire les objets, au lieu de réserver la mémoire pour eux, utilisez std :: vecteur :: réserve code> ne crée pas réellement aucun élément, il ne se réserve que la mémoire, donc lors de l'utilisation de
push_back code> ou
emplace_back < / code>,
vecteur code> ne doit pas réaffecter la mémoire pour créer de la place pour plus d'éléments. P>
std :: vecteur :: redimensionner code> p>
ou créer std :: vecteur :: réserve () code> n'est pas le même que
std :: vecteur :: redized () code>.
b.Reserve (A.Size ()) code> ne change pas la taille de la taille code> B code>. Vous devrez utiliser
b.Resize (A.Size ()) code> pour cela. P>
b code> avec la bonne taille pour commencer. p>
Vous avez un comportement non défini à b [i] code> n'existe pas, vous accédez donc au vecteur hors limites car sa taille est 0. < / p> p>
Voter pour fermer comme une faute de frappe. Vous avez besoin
redimensionner code>, pas
réserve code> pour
B.Reserve (A.Size ()); code>