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

Langage C++ Discussion :

Iterator d'une map de map.


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Par défaut Iterator d'une map de map.
    Bonjour je cherche à écrire les éléments de ma map de map dans un fichier mais j y arrive pas.

    Les instructions que j'écris dans la première boucles marchent bien, mais dans la deuxième boucle ça ne marche pas.

    Merci de m'aider à débloquer la chaine.

    Merci d'avance.
    Voici mon code.

    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
     
     
            map<string, map<string, int> > debut_marqueurs;
            map<string, int> DebutMarquerInner = debut_marqueurs[*espece];
            for(map<string,map<string,int> >::iterator cettePMap = debut_marqueurs.begin(); cettePMap != debut_marqueurs.end(); ++cettePMap)
               {
     
                   //fichier3 << debut_marqueurs[part][*espece] << endl;
                   for(map<string,int>::iterator cetElement = debut_marqueurs[*espece].begin(); cetElement != debut_marqueurs[*espece].end(); ++cetElement)
                      {
                          fichier << cettePMap ->first;
                          fichier << cetElement -> first << " : ";
                          fichier << cetElement -> second << endl;
     
                      }
               }

  2. #2
    screetch
    Invité(e)
    Par défaut
    ca veut dire quoi "ca ne marche pas"? ca ne compile pas? ou bien ca compile mais ca n'affiche rien? ou bien ca ne donne pas le ´resultat attendu? ca crash?

  3. #3
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 80
    Par défaut
    Salut,

    désolé mais j'ai très mal à la tête, m'en veux pas si je suis à côté de la plaque...

    Je ne comprend pas très bien ce que tu veux faire...
    S'il s'agit d'imprimer ta map de map, il suffit de faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    map<string, map<string, int> > debut_marqueurs;
    for(map<string,map<string,int> >::iterator cettePMap = debut_marqueurs.begin(); cettePMap != debut_marqueurs.end(); ++cettePMap)
    {
     
            //fichier3 << debut_marqueurs[part][*espece] << endl;
            for(map<string,int>::iterator cetElement = cettePMap.begin(); cetElement != cettePMap.end(); ++cetElement)
             {
                  fichier << cettePMap ->first;
                  fichier << cetElement -> first << " : ";
                  fichier << cetElement -> second << endl;
             }
    }
    Ta variable DebutMarquerInner ne sert à rien il me semble

    et dans ta deuxième boucle, tu boucles sur élément particulier de ta grande map.

    C'est quoi "espece" ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Par défaut
    Citation Envoyé par regis.portalez Voir le message
    Salut,

    désolé mais j'ai très mal à la tête, m'en veux pas si je suis à côté de la plaque...

    Je ne comprend pas très bien ce que tu veux faire...
    S'il s'agit d'imprimer ta map de map, il suffit de faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    map<string, map<string, int> > debut_marqueurs;
    for(map<string,map<string,int> >::iterator cettePMap = debut_marqueurs.begin(); cettePMap != debut_marqueurs.end(); ++cettePMap)
    {
     
            //fichier3 << debut_marqueurs[part][*espece] << endl;
            for(map<string,int>::iterator cetElement = cettePMap.begin(); cetElement != cettePMap.end(); ++cetElement)
             {
                  fichier << cettePMap ->first;
                  fichier << cetElement -> first << " : ";
                  fichier << cetElement -> second << endl;
             }
    }
    Ta variable DebutMarquerInner ne sert à rien il me semble

    et dans ta deuxième boucle, tu boucles sur élément particulier de ta grande map.

    C'est quoi "espece" ?
    Ma map de map est construite de plusieurs familles et chaque famille est associée à plusieurs espèces et à chaque espèce est associée un entier début marqueur (DedMarqueur).

    En résumé : Famille 1 associé à [Espèce 1 ,.......,Espèce14] et à chaque Espèce est associée un DedMarqueur. Ce qui donne ( Fam1 --> Espece1 ---> DedMarqueur ; Fam1 --> Espèce2-->DedMarqueur, ........, Fam(n) --> Espece(n) ---> DedMarqueur).

    En espérant avoir été clair!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Par défaut
    Citation Envoyé par screetch Voir le message
    ca veut dire quoi "ca ne marche pas"? ca ne compile pas? ou bien ca compile mais ca n'affiche rien? ou bien ca ne donne pas le ´resultat attendu? ca crash?
    Non ça ne crach pas ça ne me sort pas de message d'erreur non plus mais les instructions ne sont pas exécutées.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Par défaut
    Citation Envoyé par regis.portalez Voir le message
    Salut,
    Ta variable DebutMarquerInner ne sert à rien il me semble

    et dans ta deuxième boucle, tu boucles sur élément particulier de ta grande map.

    C'est quoi "espece" ?
    Ok t'as parfaitement raison ça sert pas à grand chose ma variable DebutMarquerInner.
    Du coup j'ai gardé le 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
     
     
    map<string, map<string, int> > debut_marqueurs;
    for(map<string,map<string,int> >::iterator cettePMap = debut_marqueurs.begin(); cettePMap != debut_marqueurs.end(); ++cettePMap)
    {
     
            //fichier3 << debut_marqueurs[part][*espece] << endl;
       /*Erreur*/     for(map<string,int>::iterator cetElement = cettePMap.begin(); cetElement != cettePMap.end(); ++cetElement)
             {
                  fichier << cettePMap ->first;
                  fichier << cetElement -> first << " : ";
                  fichier << cetElement -> second << endl;
             }
    }
    mais à la compilation j'ai le message d'erreur suivant :
    error: ‘struct std::_Rb_tree_iterator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > > > >’ has no member named ‘begin’| à la ligne commentée /*Erreur*/.

  7. #7
    screetch
    Invité(e)
    Par défaut
    cettePmap->second.begin()
    cettePmap->second.end()

    cettePMap est en fait une paire clé/valeur, second est la valeur

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Par défaut
    Citation Envoyé par screetch Voir le message
    cettePmap->second.begin()
    cettePmap->second.end()

    cettePMap est en fait une paire clé/valeur, second est la valeur
    Merci je m'en suis rendu compte tout à l'heure.

    Merci encore une fois!

Discussions similaires

  1. COnvertir une Collection en Map
    Par Tiaps dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 26/02/2008, 08h31
  2. Lancement d'une fenetre goog.. map avec une adresse specifie
    Par kleenex dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/12/2007, 17h56
  3. [JSTL] Iteration d'une Map
    Par MaInR0 dans le forum Taglibs
    Réponses: 12
    Dernier message: 13/11/2007, 10h10
  4. la tag logic iterate avec une liste Map
    Par casawi dans le forum Struts 1
    Réponses: 9
    Dernier message: 07/03/2007, 20h27
  5. Une image dans une image (image map?)
    Par oklama dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 14h13

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