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 :

problème avec iterator


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 54
    Par défaut problème avec iterator
    Bonjour, débutant en C++, j'ai du mal à mort

    je dois simuler la fonction find() parce que ça ne compare pas les attributs des objets mais les objets eux-mêmes !

    alors j'ai dans mon fichier .h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public :
    		typedef list<Noeud *> Successeur;
    		typedef map<Noeud *,Successeur> Mappy;
    et j'essaye de programmé une fonction qui renvoie un iterator qui ressemble à ça :

    (dans le .cpp LabMap étant le nom de mon fichier .h et de ma classe)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Mappy::iterator LabMap::existence(Noeud *clef)
    {
    	Mappy::iterator iter = m.begin();
    	Noeud *n;
    	while (iter != m.end())
    	{
    		n = (Noeud *)iter->first;
    		if(n->x==clef->x && n->y==clef->y) return iter;
    	}
    	return m.end();
    }
    le problème c'est qu'il me dit que Mappy n'a pas été déclaré, bref c'est le type de retour qui merde et j'arrive pas à voir comment faire parce que si c'est dans le corps d'une fonction ça marche bien mais visiblement pas en entête de fonction ! bref aidez moi s'il ous plaît???

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut Re: problème avec iterator
    Citation Envoyé par akrobat
    Bonjour, débutant en C++, j'ai du mal à mort

    je dois simuler la fonction find() parce que ça ne compare pas les attributs des objets mais les objets eux-mêmes !
    Tu devrais plutot indiquer comment faire la comparaison plutot que de refaire ca toi-meme. Le troisieme argument template de map sert a cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct ComparateurDeNoeuds {
    bool operator()(Noeud* l, Noeud* r) {
       return l->x < l->x || (l->x == r->x || l->y < r->y);
    };
    typedef std::map<Noeud*, Successeur, ComparateurDeNoeuds> Mappy;
    Pour ton autre probleme, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mappy::iterator LabMap::existence(Noeud *clef)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LabMap::Mappy::iterator LabMap::existence(Noeud *clef)
    Mappy est un nom local a la classe LabMap et quand il parse le type de retour le compilateur ne sait pas encore que tu veux definir un membre de cette classe.

    Et un dernier conseil, ne met pas de using dans les entetes. Ca les imposes a tous ceux qui doivent utiliser l'entete et ca peut leur poser des problemes (par exemple dans mon code on a un interpreteur lisp vieux d'environ 20 ans... il a un type list defini globalement aucune raison de changer cela dans nos millions de lignes de code. Si quelqu'un fait un using namespace std et qu'on inclu <list> on se retrouve avec une ambiguite entre std::list et le list de l'interpreteur).

  3. #3
    Membre chevronné Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Par défaut


    ca rendra ton message plus facile a lire

    XXiemeciel

    * Je devrais arreter de mettre autant de temps a ecrire mes message je me fais tout le temps coiffer au poteau

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 54
    Par défaut
    merci pour les réponses, c'est cool, je me disais bien qu'il devait y'avoir un possibilité de comparator, mais le problème c'est que je suis pas familier avec la recherche de doc en C++, autant c'est facile en java, autant c'est la croix et la banière en C++ quand on débute... bref, merci encore

Discussions similaires

  1. problème avec logic:iterate
    Par osman.amine dans le forum Struts 1
    Réponses: 5
    Dernier message: 11/04/2007, 16h18
  2. Problème avec Vector et Iterator
    Par boudincweole10 dans le forum Langage
    Réponses: 1
    Dernier message: 08/04/2007, 07h26
  3. [EJB2.1 Entity] [BMP] [Struts] Problème avec <logic:iterate>
    Par romain3395 dans le forum Java EE
    Réponses: 2
    Dernier message: 07/06/2004, 10h12
  4. [struts][iterate] problème logic:iterate avec un Vector
    Par jaimepasteevy dans le forum Struts 1
    Réponses: 9
    Dernier message: 31/03/2004, 18h05

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