3 votes

Déclaration à l'intérieur d'une boucle

Dans la boucle for comme ci-dessous

for(int i=0; i<n; i++) {
  vector<int>v(100);
}

Dans ce cas, j'ai un doute sur le fait que

  1. pour chaque boucle, le vecteur sera-t-il déclaré encore et encore ? Si oui, pourquoi cela ne pose-t-il pas de problème (parce que si nous redéclarons la même chose, cela pose un problème comme deux fois int x ;).

  2. la taille continue-t-elle d'augmenter à chaque boucle jusqu'à la fin, dans la boucle ci-dessus ou pour une telle boucle ?

    for(int i=0;i<10000;i++) { int k; }

8voto

Eyal Golan Points 476

pour chaque boucle, le vecteur sera-t-il déclaré encore et encore ?

Pour chaque boucle, le vecteur sera à nouveau déclaré. Chaque fois que le contrôle passe par sa définition, il sera nouvellement initialisé, et chaque fois qu'une itération de la boucle se termine, il sera détruit . Par conséquent, cela ne pose pas de problème de redéclaration. Chaque fois que le vecteur est créé, il aura la même taille.

la taille continue-t-elle d'augmenter à chaque boucle jusqu'à la fin, dans la boucle ci-dessus ou pour une telle boucle ?

Je ne suis pas sûr de ce que vous vouliez dire par là. La boucle s'exécutera jusqu'à ce que le for est remplie (c'est-à-dire i<10000 ) et chaque fois que k sera nouvellement initialisé et ensuite détruit.

5voto

R Sahu Points 24027

pour chaque boucle, le vecteur sera-t-il déclaré encore et encore ?

Non.

Il n'y a qu'une déclaration mais l'objet est construit à chaque itération de la boucle et détruit à chaque itération de la boucle.

Ce qui suit est illégal car il y a deux déclarations de la variable.

for(int i=0;i<n;i++)
{
   vector<int> v(100);
   vector<int> v;
}

la taille continue-t-elle d'augmenter à chaque boucle jusqu'à la fin, dans la boucle ci-dessus ou pour une telle boucle ?

Ce que vous entendez par là n'est pas clair. A qui appartient taille dont vous parlez ?

La taille du code généré par le compilateur ? Cela ne change pas.

La taille de la mémoire utilisée par l'ordinateur au moment de l'exécution ? Cela ne change pas non plus.

Est-ce que ça prend plus de temps pour fonctionner ? Oui.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X