2011-03-17 3 views
0
int main() 
{ 
vector<int> v(5); 
v[0]=0; v[1]=1; v[2]=2; v[3]=3; v[4]=4; 

for (int i=0; i<v.size(); i++) 
    v.pop_back(); 
for (int i=0; i<v.size(); i++) 
    cout<<v[i]; 
cout<<"\n"; 

return 0; 
} 

Je suis confus quant à savoir pourquoi la sortie est "01". Je pense que la sortie est "0"aide pour comprendre pourquoi cette sortie est "01"

+1

aïe aïe ..... s'il vous plaît laissez-il pas le code de production – Anycorn

Répondre

3

Trace chaque itération de la première boucle for par:

i v.size() v (before pop_back) 
0 5   0,1,2,3,4 
1 4   0,1,2,3 
2 3   0,1,2 
3 2   0, 1 

et la boucle s'y arrête (pas saturé lorsque i == 3) depuis 3 < 2 est faux. Donc, le contenu final de v après la boucle est [0, 1]. comme mentionné

3

Si v.size() est évalué à chaque boucle, alors la limite de la boucle diminue à mesure que vous déposez des éléments de votre vecteur. Il doit sortir les 3 derniers avant de sortir de la boucle.

+0

aussi, les odeurs comme les devoirs . – geofftnz

0

, deuxième boucle rencontre l'arrêt état au 3ème itération, depuis que je val est 3 et la taille du vecteur est 2.

+0

Ceci est vraiment un commentaire, pas une réponse à la question. Veuillez utiliser "ajouter un commentaire" pour laisser un commentaire à l'auteur. – ThePower

+0

Dites-moi ceci après 1 an et 5 mois. Ridiculos –

+0

Semble être un problème récurrent que vous avez. – ThePower

Questions connexes