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 :

Vecteur de vecteurs et itérateurs


Sujet :

C++

  1. #1
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut Vecteur de vecteurs et itérateurs
    Bonjour, j'ai un petit problème de compréhension de la syntaxe


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    std::vector<std::vector<MG_NOEUD*> >::iterator viter;
    std::vector<MG_NOEUD*>::iterator citer;                       
    for (viter = coord_triangles.begin() ; viter != coord_triangles.end() ; viter++) 
    {
        for (citer = (*viter).begin() ; citer != (*viter).end() ; citer++) 
        {
            double xg = ((*citer)->get_x() + (*citer)->get_y() + (*citer)->get_z()) / 3.;           
        }
    }
    Pourquoi ne peut-on pas faire citer = viter->begin() par exemple?


  2. #2
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Je peux me tromper, mais il me semble que -> est exclusivement réservé aux structures... Dans ton cas, ça ne peut pas se simplifier ici!

  3. #3
    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
    Par défaut
    Pourquoi ne peut-on pas faire citer = viter->begin() par exemple?
    On peut.

  4. #4
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    En effet ca fonctionne.


    Autre question, est-il préférable d'utiliser les itérateurs ou d'utiliser un compteur?

  5. #5
    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
    Par défaut
    Si tu traites les éléments séquentiellement alors un itérateur sera préférable, même si finalement ça ne change pas grand chose.

    Si par contre tu as besoin de l'indice pour autre chose, ou si tu dois faire des accès aléatoires, l'indice sera inévitable.

  6. #6
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut

  7. #7
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    Mais si je fais par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (pos = triangles.begin() ; pos < triangles.end() ; pos += 3) {
             glVertex3d((*pos)->get_x(),(*pos)->get_y(),(*pos)->get_z());
             glVertex3d((*(pos+1))->get_x(),(*(pos+1))->get_y(),(*(pos+1))->get_z());
             glVertex3d((*(pos+2))->get_x(),(*(pos+2))->get_y(),(*(pos+2))->get_z());
    }
    pos étant un itérateur

    Ca serait mieux un itérateur ou un compteur? Je fais les 2

  8. #8
    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
    Par défaut
    Fais simplement ce qui te semble le plus clair et compréhensible, au niveau perfs ce sera bien loin d'être un élément limitant pour ton application.

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

Discussions similaires

  1. Vecteur de vecteur de vecteur ?
    Par oodini dans le forum C++
    Réponses: 22
    Dernier message: 03/10/2011, 13h12
  2. Vecteurs de vecteurs de vecteurs
    Par El Charpi dans le forum C++
    Réponses: 4
    Dernier message: 11/01/2010, 21h29
  3. Vecteur de vecteur
    Par gids01 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 28/11/2006, 11h30
  4. Vecteur de vecteur pour JTable
    Par arasium dans le forum Langage
    Réponses: 3
    Dernier message: 21/06/2006, 12h24
  5. Vecteurs de vecteurs ?
    Par Edouard Kaiser dans le forum C++
    Réponses: 16
    Dernier message: 02/05/2005, 14h39

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