Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] Parcours de liste et iterateur

Sujet résolu
    3 juin 2008 à 19:23:09

    Bonjour,
    J'ai créé une liste de pointeurs vers Personne (une classe que j'ai créé) dont j'aimerai afficher le contenu grâce à une méthode ecrire(ostream &os).
    J'ai essayé cette boucle

    La première
    for (Personne *courant=liste.front(); courant <= liste.back(); courant ++)
    		{
    			courant->ecrire(cout);
    		}
    


    Bien entendu, quand j'utilise courant++ ça me mène vers la case mémoire suivante et non vers la personne suivante, donc mon programme plante.

    J'ai voulu tester avec un itérateur:
    for (list<Personne*>::iterator courant=liste.begin(); courant != liste.end(); courant ++)
    


    Cette boucle, contrairement à la première, me permet de parcourir correctement la liste, seulement je n'arrive pas à accéder à l'élément pointé par l'iterator courant et d'utiliser la methode ecrire ...


    Pour résumer, la première boucle me permet d'accéder correctement à l'élément de la liste et d'utiliser la methode ecrire, mais je ne peut pas me déplacer dans la liste. Dans la deuxième, je peux me déplacer dans la liste, mais je ne peut pas accéder à l'élément.
    En fait il me faudrait une fonction qui me permette de connaitre la valeur d'un élément en connaissant la valeur de son iterateur.

    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      3 juin 2008 à 19:40:02

      Utilise la 2e possibilité, utiliser un conteneur de la STL te simplifiera grandement les choses.
      Pour ton problème, il te faut d'abord dé-référencer l'itérateur avant de pouvoir accéder à ce qu'il pointe :

      (*courant)->ecrire(cout);
      
      • Partager sur Facebook
      • Partager sur Twitter
        3 juin 2008 à 20:12:17

        Cyprien_ je t'aime !!!! ça fait des heures que je bloque sur ça ! Merci beaucoup pour ton aide ^^
        • Partager sur Facebook
        • Partager sur Twitter

        [SDL] Parcours de liste et iterateur

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown