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 :

Initialisation d'itérateur sur une map vide


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Par défaut Initialisation d'itérateur sur une map vide
    Bonjour,

    J'initialise un itérateur sur le begin() d'une map vide. Je voudrais savoir si à l'insertion d'un nouvel élément, mon itérateur sera automatiquement placé sur le premier élément ou si il faut que je le replace moi-même.

    Merci beaucoup !

  2. #2
    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 Pitu45

    Initialiser ton pointeur avec begin() sur une map vide revient à l'initialiser avec end().

    Le template de map::insert est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iterator insert ( iterator position, const value_type& x );
    ce qui indique que ton pointeur n'est pas modifié et qu'il pointera toujours sur le même élément (et donc sur end()). Il fait donc le mettre à jour.

    Pour information, std::map trie les éléments en fonction de la clé. Il n'est pas nécessaire de lui donner un pointeur (cela permet juste d'accélérer l'insertion).

    Si tu veux un pointeur sur l'élément inséré, il suffit de récupérer la variable de retour (code extrait du lien donné en référence) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // template de la fonction définie par :
    // pair<iterator,bool> insert ( const value_type& x );
    map<char,int> mymap;
    map<char,int>::iterator it;
    pair<map<char,int>::iterator,bool> ret;
     
    ret = mymap.insert (pair<char,int>('z',500) ); 
    if(ret.second == false)
    {
     cout << "element 'z' already existed";
     cout << " with a value of " << ret.first->second << endl;
    }
    voir : http://www.cplusplus.com/reference/stl/map/insert/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Par défaut
    Thanks

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

Discussions similaires

  1. Plantage sur une donnée vide d'une Map
    Par vince29 dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 12/03/2013, 18h42
  2. Criteria sur une Map
    Par sup dans le forum Hibernate
    Réponses: 1
    Dernier message: 20/09/2007, 12h08
  3. test sur une base vide
    Par supersoft5 dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/04/2007, 09h49
  4. @OneToMany sur une Map<Product,Integer>
    Par ®om dans le forum JPA
    Réponses: 5
    Dernier message: 25/02/2007, 19h13
  5. [jTable] Gérer clik droit sur une jTable vide
    Par serwol dans le forum Composants
    Réponses: 4
    Dernier message: 01/12/2005, 10h06

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