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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    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 expérimenté Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

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

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

  4. #4
    Membre émérite
    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 : 40
    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
    Par défaut
    L'itérateur est un pointeur.
    Dans ton cas, équivaut à

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    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 émérite
    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 : 40
    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
    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 ?

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