Bonjour,

Je vous remercie par avance si vous comptez lire ce message et encore plus si vous pensez y répondre !

J'ai eu un problème aujourd'hui (enfin deux) avec la bibliothèque <list> de la stdl en c++

Voici ce qui s'est passé

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
void remettre_cartes(list<string>& cards, list<string>& in_play){
    for(auto it = in_play.cbegin(); it != in_play.cend(); ++it){
        string c = *it;
        cards.push_back(c);
    }
    in_play.clear();
}
n'a pas le même comportement que

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
void remettre_cartes(list<string>& cards, list<string>& in_play){
    for(int i = 0; i < in_play.size(); i++){
        string c = in_play.front();
        cards.push_back(c);
        in_play.pop_front();
    }
}
De là où je me tiens (et votre mission si vous l'acceptez consiste à m'expliquer en quoi je me trompe ! ), dans le second code, le premier élément de la liste devrait être supprimé de in_play et rajouté dans cards à chaque tour de boucle jusqu'à ce que in_play soit vide, or dans la pratique il m'a ajouté 4 fois la même string (in_play.size() == 4 à ce moment là)

Quelqu'un sait-il pourquoi ? Merci