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 :

vector<map<string, string> >::iterator ?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    206
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 206
    Par d�faut vector<map<string, string> >::iterator ?
    Bonjour � tous

    J'essaie d'it�rer sur un container de type vector<map<string, string> >::iterator et je n'y arrive pas. Voila ce que j'essaie:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    for(vector<map<string, string> >::iterator itx = vmx.begin(); itx != vmx.end(); ++itx)
    cout << itx->first << " " << itx->second << endl;
    Mais le compilateur me dit que first et second n'existent pas... Je souhaiterais acc�der aux cl�s et valeur de chaque map, en parcourant le vector.

    Auriez-vous une id�e ?

    Merci d'avance

  2. #2
    Membre tr�s actif Avatar de subzero01
    Inscrit en
    D�cembre 2007
    Messages
    281
    D�tails du profil
    Informations personnelles :
    �ge : 42

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 281
    Par d�faut
    te faut pas simplement des () devant first et second ?!

  3. #3
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    itx est une it�rateur de vector, et pas de map, donc effectivement first et second n'existent pas. Pour acc�der � la valeur point�e par l'it�rateur, tu fais comme ceici : ( * itx).
    L� tu auras une map<string, string>. Il te faut donc cr�er une nouvelle boucle pour acc�der � chaque couple de valeurs de chaque map :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for (vector< map<string, string> >::iterator itx = vmx.begin() ; itx != vmx.end() ; ++itx)
    {
    	for (map<string, string>::iterator it = ( * itx).begin() ; it != ( * itx).end() ; ++it)
    	{
    		cout << it->first << " " << it->second << endl;
    	}
    }
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Sant�

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par d�faut
    Bonjour Scheme

    itx n'est pas un iterateur sur une map mais sur un vecteur !
    Utilise des typedef pour rendre le code plus lisible :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    typedef std::map<string, string> Map;
    typedef Map::iterator MapIterator;
    typedef std::vector<Map> Vector;
    typedef Vector::iterator VectorIterator;
     
    Vector vmx;
    for(VectorIterator itx = vmx.begin(); itx != vmx.end(); ++itx)
    {
        Map& une_map = *itx;
        MapIterator it_map = une_map.begin(); 
        cout << it_map->first << " " << it_map->second << endl;
    }
    EDIT : pris de court par dragonjoker59

  5. #5
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Utilise des typedef pour rendre le code plus lisible
    Je suis d'accord, parce que tout de m�me, "vector< map<string, string> >::iterator" c'est moche...
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  6. #6
    Membre Expert

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par d�faut
    Citation Envoy� par dragonjoker59 Voir le message
    Je suis d'accord, parce que tout de m�me, "vector< map<string, string> >::iterator" c'est moche...
    Peut-�tre parce que vector<map<string,string> > c'est d�j� moche � la base

    N'y-a-t-il pas une autre mani�re de faire ? Parce que la copie (en cas de copie) est quand m�me extr�mement lourde...

    Et au niveau architecture, j'ai du mal � voir l'int�r�t d'une telle collection �trange...
    [FAQ des forums][FAQ D�veloppement 2D, 3D et Jeux][Si vous ne savez pas ou vous en �tes...]
    Essayez d'�crire clairement (c'est � dire avec des mots fran�ais complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Caf�. C'est d�pass� tout �a.
    Et si vous �tes sages, vous aurez peut �tre vous aussi la chance de passer � la t�l�. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    206
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 206
    Par d�faut
    Merci � vous deux

    En fait j'utilise un parser de xml qui renvoie cette fameuse collection que je trouve aussi tr�s lourde. Je n'ai pas le choix :s

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    206
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 206
    Par d�faut
    Ce n'est pas �vident du tout d'utiliser cette collection...

    Je n'arrive pas � acc�der � un �lement donn� d'une map par exemple.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    for(vector<map<string, string> >::iterator itx = vmx.begin(); itx != vmx.end(); ++itx) {
    	cout << itx->find("name") << endl;
    }
    Ce code ne fonctionne pas, je suis oblig� d'utiliser un iterator sur la map en plus de celui du vector pour arriver � faire ce que je veux ?

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. System.getenv() et interface Map<String, String>
    Par Elisia dans le forum Collection et Stream
    R�ponses: 3
    Dernier message: 23/01/2014, 12h58
  2. Map<String, String> static et accents
    Par zaboug dans le forum Collection et Stream
    R�ponses: 7
    Dernier message: 01/08/2011, 10h11
  3. Recuperation d'un map <string,string> au lieu d'un list
    Par sallemel dans le forum Hibernate
    R�ponses: 2
    Dernier message: 25/02/2011, 00h56
  4. @CollectionOfElements Map<String, String>
    Par Hammer dans le forum Hibernate
    R�ponses: 1
    Dernier message: 15/04/2010, 20h27
  5. Vector de structure contenant des string
    Par Nicolas Bauland dans le forum C++
    R�ponses: 9
    Dernier message: 04/02/2010, 12h47

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