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 :

créer et parcourir une map <int,list>


Sujet :

SL & STL C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 147
    Par défaut créer et parcourir une map <int,list>
    Salut tout le monde,
    je cherche à créer et à parcourir une map ayant un int comme clé et une list comme valeur associé.

    En java cela ne m'aurais pas possé de problémes mais comment je débute en C++ j'ai du mal à trouvé l'info.

    j'ai réussi à créer la map en question en utilisant typedef mais je ne sais ni comment ajouter des clé avec leurs valeurs ni comment la parcourir (mon objectif étant d'extraire chaque liste associé à chaqe clé.)

    Merci d'avance pour vos réponse

    dsl ce probléme doit être un peux bateau mais comme je l'ai dis plus haut je n'ai pas réussi à trouver la bonne syntaxe

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 42
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    std::map<int, std::list<le_type_que_tu_veux> > ta_map;
     
    // pour parcourir toutes les paires de la map
    for(ta_map::/*const_*/iterator it=ta_map.begin() ; it!=ta_map.end() ; ++it)
    {
        it->first; // accede à la clé
        if->second; // accede à la valeur
    }
    un iterator fourni des "&" avec first et second
    un const_iterator fourni des "const &" avec first et second

    l'operateur operator [] (&key) sert à lire et ecrire la valeur à la clé donnée

    EDIT : Tu devrais te procurer un des mega tutos sur le C++, dans la section tutoriels, je pense que tout ceci doit y être expliqué.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Par défaut
    normalement, tu peux acceder a une liste en ecrivant



    typedef std::map<int,std::list<maclass> > mamap;

    mamap m;

    m[3].push_back(maclass());
    note :

    ici j accede a la liste de cle 3. Si la list correspondante n existait pas dans la map elle est systematiquement ajoutee

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Par défaut
    un autre petit exemple :

    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
    52
    53
     
    #include <iostream>
    #include <list>
    #include <map>
    #include <iterator>
    #include <algorithm>
     
    using namespace std;
     
    int main(int argc, char **argv)
    {
      // notre liste d'entiers
      typedef list<int> ListInt;
      // notre map entier/liste
      typedef map<int,ListInt> IntListMap;
     
      ListInt list1, list2;
      IntListMap ilm;
     
      // remplissage des listes
      list1.push_back(1);
      list1.push_back(2);
      list2.push_back(3);
      list2.push_back(4);
     
      // remplissage du map
      ilm[1] = list1;
      ilm[2] = list2;
     
      cout << "list1 : ";
      copy(list1.begin(), list1.end(), ostream_iterator<int>(cout," "));
      cout << endl;
     
      cout << "list2 : ";
      list2.push_back(5);
      copy(list2.begin(), list2.end(), ostream_iterator<int>(cout," "));
      cout << endl;
     
      cout << "ilm[2] pour montrer que, dans ce cas ilm[2] est différent de list2: ";
      ListInt list3 = ilm[2];
      copy(list3.begin(), list3.end(), ostream_iterator<int>(cout," "));
      cout << endl;
     
      cout << "le map : " << endl;
      IntListMap::iterator pos;
      for ( pos = ilm.begin(); pos != ilm.end(); ++pos)
      {
        ListInt l = pos->second ;
        cout << "[" << pos->first << "] = " ;
        copy(l.begin(), l.end(), ostream_iterator<int>(cout," "));
        cout << endl;
      }
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 147
    Par défaut
    Merci beaucoup les gars
    Je suis impressionné par la vitesse à laquel les réponses sont arrivées

    Je vais tester ça (il n'y a pas de raison que ça ne fonctionne pas )

  6. #6
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Encore plus fun sous Visual Studio C++ 2005 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    std::map<STRING,STRING>	ret;
    std::pair<STRING,STRING> v;
    for each( v in ret )
    {
    	v.first;
    	v.second;
    }
    Attention ceci n'est pas dans la spécif. du language C++, mais fonctionne sans code managé.

  7. #7
    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
    Attention à ne pas induire les gens en erreur, ça ce n'est pas du C++ natif, ça ressemble plutôt à du C++/CLI.

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

Discussions similaires

  1. STL parcourir une map.
    Par peapol dans le forum Langage
    Réponses: 13
    Dernier message: 20/11/2011, 18h27
  2. Parcourir une map en fonction de deux critères
    Par lucares dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 29/09/2011, 20h51
  3. Comment parcourir une map en sens inverse
    Par alen dans le forum SL & STL
    Réponses: 8
    Dernier message: 03/08/2008, 20h24
  4. Parcourir une liste deroulante
    Par brandon dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/02/2005, 19h03
  5. [langage] Parcourir une list de array
    Par nledez dans le forum Langage
    Réponses: 4
    Dernier message: 08/11/2004, 17h11

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