IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

API de <list> c++ !


Sujet :

C++

  1. #1
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2014
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 126
    Par d�faut API de <list> c++ !
    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

  2. #2
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement mat�riel �lectronique
    Inscrit en
    D�cembre 2015
    Messages
    1 599
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement mat�riel �lectronique
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : D�cembre 2015
    Messages : 1 599
    Par d�faut
    Bonjour,

    Je vois bien un probl�me dans le second code, mais pas celui l�.
    La boucle n'est parcourue qu'� moiti� (� chaque it�ration i augment de 1 et la taille diminue d'autant)
    j'�crirais plut�t :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    while ( !in_play.empty() ) { ...
    Mais existe bien d'autre mani�res de parcourir une liste.

  3. #3
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2014
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 126
    Par d�faut
    Merci beaucoup

  4. #4
    Membre �clair�
    Homme Profil pro
    Inscrit en
    F�vrier 2013
    Messages
    70
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : F�vrier 2013
    Messages : 70
    Par d�faut
    Je suis d'accord avec l'utilisation de la boucle while.

    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++){ // cette taille n'est pas constante
            string c = in_play.front();
            cards.push_back(c);
            in_play.pop_front(); //La taille diminue de 1
        }
    }

    On peut aussi corriger le nombre d'it�rations de cette mani�re.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    const unsigned TailledeLaListe=in_play.size(); // une constante
    for(int i = 0; i < TailledeLaListe; i++)

  5. #5
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2014
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 126
    Par d�faut
    J'avais compris comment fix le probl�me imm�diatement apr�s ton explication !

    Oui je n'ai pas bien fait attention � �a...

    Merci beaucoup � vous deux

  6. #6
    Membre Expert
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par d�faut
    Une autre solution est d'utiliser splice.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    void remettre_cartes(list<string>& cards, list<string>& in_play) {
        cards.splice(cards.end(), in_play);
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. API C et listes
    Par fred1599 dans le forum Interfa�age autre langage
    R�ponses: 0
    Dernier message: 30/12/2012, 00h28
  2. R�ponses: 4
    Dernier message: 27/10/2011, 15h06
  3. liste api
    Par herzleid dans le forum Windows
    R�ponses: 7
    Dernier message: 18/02/2008, 17h15
  4. [VB.NET] Listing d'un r�pertoire par FTP avec API
    Par joefou dans le forum VB.NET
    R�ponses: 1
    Dernier message: 16/12/2005, 15h29
  5. [SHELL API] Liste des Ic�nes dans le casier (et position)..
    Par ARDILLER dans le forum API, COM et SDKs
    R�ponses: 4
    Dernier message: 07/05/2005, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo