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 :

afficher les valeurs des objets contenu dans un vecteur


Sujet :

SL & STL C++

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 66
    Points
    66
    Par défaut afficher les valeurs des objets contenu dans un vecteur
    Bonjour,

    J'essaie d'afficher les valeurs des objets contenu dans un vecteurà l'aide d'un itérateur mais j'obtiens l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    __gnu_cxx::__normal_iterator<PixelInpaint*, std::vector<PixelInpaint, std::allocator<PixelInpaint> > >' has no member named 'getPriorite'
    sur la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cout<< i.getPriorite() <<endl;
    à partir du code suivant:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    #include <iostream> 
    #include <vector>
    #include <algorithm>
     
    using namespace std;
     
    class PixelInpaint{
    public:
        PixelInpaint();
    	PixelInpaint(float priorite): priorite (priorite) {};
     
    	float getPriorite(){return priorite;};
    	void setPriorite(float p){priorite=p;};
     
    protected:
    	float priorite;
    };
     
    struct TriParPriorite 
    { 
       inline bool operator ()( PixelInpaint p1,  PixelInpaint p2)
       { 
          return p1.getPriorite() < p2.getPriorite();
       } 
    }; 
     
    int main() 
    { 
        PixelInpaint pi1(2.0);
        PixelInpaint pi2(5.0);
        PixelInpaint pi3(1.0);
        PixelInpaint pi4(3.0);
     
        vector <PixelInpaint> monVector;
        monVector.push_back (PixelInpaint (pi1));
        monVector.push_back (PixelInpaint (pi2));
        monVector.push_back (PixelInpaint (pi3));
        monVector.push_back (PixelInpaint (pi4));
     
        cout << monVector.back().getPriorite() << endl; // fonctionne
     
        for(vector<PixelInpaint>::iterator i = monVector.begin(); i != monVector.end(); ++i)
            cout<< i.getPriorite() <<endl; // ne fonctionne pas
     
        sort (monVector.begin(), monVector.end(), TriParPriorite()); // fonctionne
     
        cout << monVector.back().getPriorite() << endl; // fonctionne
     
        system("pause");
    }
    merci de votre aide

  2. #2
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358

  3. #3
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 66
    Points
    66
    Par défaut
    merci pour ta réponse rapide
    est-ce que l'* signifie que l'itérateur est un pointeur ?

  4. #4
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    L'itérateur est un pointeur.
    Dans ton cas, équivaut à
    "L'ordinateur obéit à vos ordres, pas à vos intentions." [Anonyme]

  5. #5
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 66
    Points
    66
    Par défaut
    d'accord, merci pour cette précision.

  6. #6
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par spoutspout Voir le message
    L'itérateur est un pointeur.
    Mais non ....

    C'est juste que les operateurs -> et * sont redefinis pour renvoyer ton objet.

  7. #7
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    L'itérateur n'est pas qu'un pointeur, mais il sert entre autres à viser les éléments d'un container, non ?
    "L'ordinateur obéit à vos ordres, pas à vos intentions." [Anonyme]

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/05/2015, 11h13
  2. [Débutant] afficher les valeurs d'une matrice dans un vecteur ?
    Par Imène_23 dans le forum MATLAB
    Réponses: 3
    Dernier message: 21/08/2011, 12h39
  3. Réponses: 2
    Dernier message: 01/12/2008, 12h00
  4. afficher les valeur d'une requete dans une combobox
    Par carlos587261 dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/06/2007, 08h45
  5. Afficher les valeurs d'une structure dans une matrice
    Par yabbiyou dans le forum MATLAB
    Réponses: 1
    Dernier message: 22/02/2007, 12h26

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