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 :

insertion d'une liste definie dans une structure


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut insertion d'une liste definie dans une structure
    Bonjour, J'ai un petit problème au niveau mon tp:
    j'ai une structure et je veux inséré es élément d'une liste dans mon arbre map:
    voici la structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     struct Sommet{
            mutable bool visite;
            set<std::string> voisins;
            Coordonnee coor;
            Sommet(Coordonnee const & c):coor(c){}
     
            list <std::string> route;
     
        };
     
        map<std::string, Sommet> sommets;
    je veux insérer une liste es routes pour chaque points
    voici ma fonction :
    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
     
    void Carte::ajouterRoute(const string& nom, list<string>& listeNoms){
     
      for(list<std::string>::const_iterator itr = listeNoms.begin();itr!=listeNoms.end();++itr){
        map<std::string ,Sommet>::iterator iter=sommets.find(*itr);
        if(iter!=sommets.end()){
        //iter->second.route = nom;
            iter->second.route.insert(nom); // ici le problème d'insertion
            //sommets.at(s1).voisins.insert(s2);
            //  cout <<"iter route  "<< iter->first;
        cout << iter->first <<" , "<< iter->second.route;
        cout << endl;
       // cout <<"iter nom  "<< nom;
        cout << endl;
     
        }
     }
     
    }

  2. #2
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 871
    Par défaut
    La méthode insert prend 2 arguments. Lien du man.

  3. #3
    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
    Insert permet d'insérer n'importe où dans la liste. Si tu souhaites insérer à la fin ou au début, utilise push_back ou pusk_front (ou emplace, emplace_back, emplace_front)


    Quelques remarques supplémentaires (de vieux râleur ) :
    • par habitude, on mets tous les noms en anglais (sommet, voisin, ajouterRoute)
    • je te conseille de regarder le design de la bibliothèque standard et d'essayer de le respecter au maximum. Par exemple copy_if
    • donc de passer une paire d'itérateurs (en template) dans ta fonction plutôt que directement un vector. La raison est que cela permet de travailler que des parties d'un conteneur (et n'importe quel conteneur) plutôt qu'un conteneur entier
    • l'ordre des arguments : d'abord les itérateurs d'entrée, puis les itérateurs de sortie s'il y en a (pas dans ton cas), les valeurs s'il y en a, puis le prédicat si nécessaire.
    • (plus avancé) ajouter un prédicat à ta fonction, pour utiliser d'autres test ou des lambdas. Par exemple, imagine que tu modifies ta classe pou intégrer le nom dans Sommet :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      struct Sommet{
          ...
          string name;
      };
       
      list<Sommet> sommets;
      tu devras réécrire une grande partie de ton code. Avec un prédicat, tu gagnes en souplesse
    • (avancé aussi) au final, ce que tu fais, c'est une fonction "find_push". Tu devrais du coup créer cet algo (fonction libre dans un espace de nom ?)


    (c'est que quelques pistes de réflexion, tu n'auras probablement pas le temps d'implémenter tout ça pour ton tp)

    Bon courage

Discussions similaires

  1. Réponses: 18
    Dernier message: 08/11/2012, 17h47
  2. Réponses: 1
    Dernier message: 12/12/2011, 10h07
  3. Recherche des données dans une BD ou dans une List
    Par mesken dans le forum Hibernate
    Réponses: 3
    Dernier message: 15/05/2011, 16h45
  4. modifier une liste contenue dans une liste
    Par harris_macken dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 18/03/2008, 16h52
  5. acceder à une liste contenue dans une liste
    Par CPI_en_mousse dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 12/06/2007, 08h33

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