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

SL & STL C++ Discussion :

parcours d'une liste


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Par défaut parcours d'une liste
    bonsoir a tous.
    est ce qu'on pourrait parcourrir une liste de la stl sans utiliser un iterateur.

  2. #2
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 181
    Par défaut
    Nope, les itérateurs ont été justement conçus pour le parcours des conteneurs de la STL.
    Quel est le problème avec ta std::list ?

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Par défaut
    merci pour la reponse.

    le principe de la liste chainee,c'est qu'elle contient des noeuds,chaque noeud pointant vers le noeud suivant,chose qui assure ce chainage puisue le parcours se fait simplement via une methode qui ne fai qu'affecter au noeud courrant l'adresse du suivant de l'ex courrant.
    ma question est:
    est ce que la list de la stl n'est pas munie d'une telle methode next().
    Merci.

  4. #4
    Membre éprouvé Avatar de krieg
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Par défaut
    Salut,
    non, il n'y a pas de méthode next() sur les listes stl.
    mais tu peux creer une liste stl avec des element d'une classe dans laquel tu peux implanter ta méthode next().
    si tu souhaites en savoir plus :
    http://cpp.developpez.com/faq/cpp/?page=STL

    bye

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Par défaut
    merci pour la reponse.
    mais, je ne pense pas que le fait de munir les elements de la liste d'une telle methode marcherait.et je ne vois pas comment pourrait on concevoir cela.
    si par exemple on a une liste de points,sachant que point est defini dans une classe a part.
    implanter une methode next() pour la classe point n'aurait vraiment pas de signification.
    vous etes pas d'accord avec moi?

  6. #6
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Citation Envoyé par monodev
    est ce que la list de la stl n'est pas munie d'une telle methode next().
    Si, en quelque sorte, par le biais d'un itérateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    // Habituellement pour parcourir une liste on fait :
    Node * node = head;
    while(node)
    {
        node->DoStuff();
        node = node->next();
    }
     
    // Alors qu'avec la STL on fait :
    std::list<Point>::iterator it = liste.begin();
    while(it != liste.end()
    {
       it->DoStuff();
       it++;
    }
     
    // Ceci dit la notation usuelle, que tu retrouveras dans les tutos sur la STL est plutôt :
    for(std::list<Point>::iterator it = liste.begin() ; it != liste.end() ; ++it)
    {
       it->DoStuff();
    }
    liste.begin() est l'équivalent du pointeur de tête
    liste.end() est l'équivalent du pointeur null en fin de liste.
    it++ est l'équivalent de node = node->next();

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Par défaut
    merci pour la reponse.

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Ou encore, pour être 100% STL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    std::for_each(
       liste.begin(),
       liste.end(),
       std::mem_fun_ref(&Point::DoStuff)
    );

  9. #9
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    mem_fun_ref c'est pour les low.
    Le true-STL-spirit c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::for_each(liste.begin(), liste.end(), [](Point& p){p.DoStuff()});
    Lambdaaaa powwwwwwwwaaahh !!!

Discussions similaires

  1. script de parcours d'une liste de valeurs
    Par sallemel dans le forum Linux
    Réponses: 4
    Dernier message: 09/11/2010, 18h57
  2. Parcours d'une liste dans DisplayTag
    Par riderfun dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 26/03/2010, 09h39
  3. Boucle infinie lors d'un parcours d'une liste
    Par cocosql dans le forum Prolog
    Réponses: 3
    Dernier message: 16/01/2009, 07h23
  4. parcours d une liste de données.
    Par Mobistar dans le forum Collection et Stream
    Réponses: 16
    Dernier message: 08/08/2008, 13h33
  5. Parcours d'une liste de liste
    Par pagra dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 10/10/2007, 19h24

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