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 :

C++, STL, List et Iterator


Sujet :

SL & STL C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 12
    Points : 7
    Points
    7
    Par défaut C++, STL, List et Iterator
    Bonjour tout le monde,

    J'ai appris que de merveilleurs librairies existaient pour créer des listes en C++ ! Seulement, il semblerait que je sois pas assez calé pour comprendre mes erreurs.

    Voici mon problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    list<int> toto;
    for(int i = 0; i < 10; i ++)
    toto.push_back(i);
    Jusque là, Visual C++ compile correctement.
    Lorsque j'ajoute ces lignes, c'est le désastre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    list<int>::iterator itToto;
     
    for(int itToto = toto.begin(), itToto = toto.end(); itToto ++)
    {
    	cout << *itToto << endl;
    }
    Il me répond que
    error 2440 : 'initialisation' : impossible de convertir de std::list<_Ty>::_Iterator<_Secure_Validation> en "int"
    Merci par avance pour vos réponses, qui je l'espère seront nombreuses !

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu redéclares itToto en tant que int, ce qui n'a pas de sens surtout que tu l'as déjà correctement déclaré plus haut comme étant un itérateur sur ta liste. Retire simplement ce int et ça devrait fonctionner

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 28
    Points : 21
    Points
    21
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       std::list<int> toto;
    
       // ...
    
    
       for(std::list<int>::iterator it = toto.begin(); it != toto.end(); ++it)
       {
          // ...
       }
    Je ne sais pas si c'est une erreur de frappe, mais dans la condition de la boucle on devrait plutôt lire "it != toto.end()", et non "it = toto.end()".

    Pour ce qui est de l'incrémentation de l'itérateur dans cette boucle, utiliser la pré-incrémentation "++it" devrait être légèrement plus performant.

    Mathieu

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Oui en effet, c'était totalement stupide de ma part ce genre d'erreurs.
    Cependant,

    J'ai corrigé et j'ai encore une erreur bien gênant cette fois ci car je ne vois aucune faute cette fois ci (j'avais mal retaper dans la version précédente)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    list<int> toto;
    for(int i = 0; i < 10; i ++)
    toto.push_back(i);
     
    list<int>::iterator itToto;
     
    for(itToto = toto.begin(); itToto < toto.end(); itToto ++)
    {
    	cout << *itToto << endl;
    }
    Et la :
    error C2784: 'bool std::operator <(const std::list<_Ty,_Ax> &,const std::list<_Ty,_Ax> &)'*: impossible de déduire l'argument modèle pour 'const std::list<_Ty,_Ax> &' à partir de 'std::list<_Ty>::_Iterator<_Secure_validation>'
    with
    [
    _Ty=int,
    _Secure_validation=true
    ]
    c:\program files\microsoft visual studio 8\vc\include\list(1274)*: voir la déclaration de 'std::operator <'

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Utilise != et pas < ....

  6. #6
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    les opérateurs < <= > >= n'existent pas pour les itérateurs.
    tu n'as le choix qu'entre == et !=.
    Dans ton cas c'est != qui convient.

    a+
    jmv

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup pour vos réponses ! C'était tout à fait ça !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [STL] Probleme STL : List : Iterator
    Par SpongeBob dans le forum SL & STL
    Réponses: 11
    Dernier message: 18/07/2007, 21h01
  2. STL list : acceder aux enfant d'une class depuis un liste
    Par poussinphp dans le forum SL & STL
    Réponses: 6
    Dernier message: 29/04/2007, 17h21
  3. pb dans la stl::list avec size
    Par DEVfan dans le forum SL & STL
    Réponses: 6
    Dernier message: 10/01/2007, 18h35
  4. STL List et variable globale (extern)
    Par flipper203 dans le forum SL & STL
    Réponses: 9
    Dernier message: 04/07/2006, 14h20
  5. STL : list
    Par hitchie dans le forum SL & STL
    Réponses: 17
    Dernier message: 02/04/2006, 21h44

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