J'ai un problème avec le code suivant:
#include <iostream> #include <deque> using namespace std; int main() { deque<int> q = {1}; for (int val = q.front(); !q.empty(); q.pop_front()) { cout << val << endl; q.push_back(val + 1); q.push_back(val + 2); } }
3 Réponses :
Vous ne mettez jamais à jour l'entier Vous pouvez résoudre ce par exemple. par p> val code>. Il n'est initialisé que dans la première partie de votre boucle pour la boucle et, lorsque vous avez copié la première valeur du conteneur, celui-ci continue d'être imprimé.
C'est parce que vous ne modifiez jamais la valeur de soit modifier val code>. Vous l'initialisez comme
int Val = q.front () code> et c'était la dernière fois que cela a été modifié. P>
val code>, par ex.
q.push_back (++ val); code> ou imprimer le contenu de
deque
Il y a deux problèmes avec la boucle.
Le premier est que la variable VAL n'est pas modifiée dans la boucle et sa valeur initiale définie dans la partie introduction de la boucle est toujours émise. P>
for ( ; !q.empty(); q.pop_front() ) { std::cout << q.front() << '\n'; q.push_back( q.front() + 1 ); }
Où est
Val code> mis à jour après son attribution initiale avant la première itération du
pour code> boucle?