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 d'itérateur et de vecteur


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mars 2006
    Messages : 18
    Par défaut Problème d'itérateur et de vecteur
    Bonjour,
    j'ai un problème dans la manipulation des vecteurs et des itérateurs

    class animal
    {
    protected:

    int x, age, nrj,age_max;
    string espece;
    char sexe;
    bool statut;

    public:
    virtual void set_sexe()=0;
    virtual void set_statut(bool)=0;
    virtual void edite()=0;
    }
    class renard: public animal
    {
    public:
    renard();
    virtual char get_sexe();
    virtual bool get_statut();
    virtual string get_espece();

    virtual void set_espece();
    virtual void set_sexe();
    virtual void set_statut(bool s);
    }
    Avec ces deux classes je fait un vecteur d'animal * pour faire fonctionner le polymorphisme.

    class liste_animal : public vector <animal *>
    {
    public:
    liste_animal():vector <animal *>(){}

    void ajoute(animal * rl)
    {
    push_back(rl);//ajout a la fin
    }

    void edite_liste()
    {
    liste_animal::iterator i;
    for(i=begin();i!=end();i++)
    {
    (*this)->edite();
    }
    }

    void supprimer_morts() //permet de supprimer un animal mort dans la chaine
    {
    liste_animal::iterator i;
    for(i=begin();i!=end();i++)
    //boucle supprimant les animaux morts de la liste
    {
    if ((*this)[i]->get_statut()==false || (*this)[i]->get_nrj()==0)
    {
    erase(i);
    i--; //fait pointer sur le suivant
    }
    }
    }
    Au niveau de la ligne en gras je ne sais pas quelle syntaxe utilisée, le compilateur me dit que [] n'a pas été surdéfini.
    J'utilise des itérateurs, dois-je utiliser des "size_t i" comme j'ai vu dans certains exemples.

    Merci de me donner des pistes et de me donner si possible des liens ou des exemples sont exposés car je patauge dans le semoule!

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Les itérateurs s'utilisent (presque) comme des pointeurs.
    perso, j'utilise des noms tels que it, it1, it2, pour les itérateurs, plutôt que i,j qui sont trop synonyme d'entier, d'où la confusion qui est probablement partiellement à l'origine de ton problème.

    Donc il faut utiliser une syntaxe du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (it->get_statut()==false || it->get_nrj()==0)
    La syntaxe suivante devrait être néanmoins privilégiée (au cas où l'opérateur * serait surchargé, et non l'opérateur -> )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((*it).get_statut()==false || (*it).get_nrj()==0)

Discussions similaires

  1. [Débutant] Problème de corrélation entre deux vecteurs vitesses
    Par sydneya dans le forum Signal
    Réponses: 2
    Dernier message: 29/08/2007, 08h08
  2. Problème de pointeur dans un vecteur
    Par sylsau dans le forum C++
    Réponses: 23
    Dernier message: 22/08/2007, 09h25
  3. [Débutante] Problème de parcours d'un vecteur
    Par sab_etudianteBTS dans le forum Langage
    Réponses: 4
    Dernier message: 20/05/2007, 14h29
  4. [Struts] Problème pour itérer sur un vecteur
    Par vallica dans le forum Struts 1
    Réponses: 5
    Dernier message: 24/04/2006, 15h45
  5. Réponses: 2
    Dernier message: 10/04/2006, 19h40

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