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 :

multimap et iterator


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut multimap et iterator
    Bonjour, j'ai fait un programme pour comprendre le fonctionnement des iterators.

    Tout à la fin de mon programme je fais mm.erase(it2); puis je fais printIterator(it3); Pouquoi it3 ne vaut-il pas it2 car j'ai effacé une "case" de ma multimap ?

    Voici mon programme (écrit à la va-vite...)

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    #include <iostream>
    #include<map>
    #include <utility>
    using namespace std;
     
    typedef pair<int,int> pII;
    typedef pair<double, pII> pDpII;
    typedef multimap<double,pair<int,int> > mmDpII;
    static void printIterator(const mmDpII::iterator & it);
     
    static void printMultimap(const mmDpII & mm);
     
    int main()
    {
      mmDpII mm;
      pII p1(1,3);
      pDpII p2(1.2,p1);
      mm.insert(p2);
     
      p1 = make_pair(1,2);
      p2 = make_pair(2.4,p1);
      mm.insert(p2);
     
      p1 = make_pair(2,3);
      p2 = make_pair(3.5,p1);
      mm.insert(p2);
     
      cout<<"affichage de mm"<<endl;
      printMultimap(mm);
     
      mmDpII::iterator it1,it2,it3;
      it1 = mm.begin();
      it2 = it1; it2++;
      it3 = it2; it3++;
     
      cout<<"affichage des iterators"<<endl;
      printIterator(it1);
      printIterator(it2);
      printIterator(it3);
      cout<<endl;
     
      p1 = make_pair(3,4);
      p2 = make_pair(2.6,p1);
      mm.insert(p2);
     
      cout<<"affichage de mm"<<endl;
      printMultimap(mm);  
     
      mm.erase(it2);
     
      cout<<"affichage de mm apres suppression de it2"<<endl;
      printMultimap(mm);
     
      cout<<endl;
     
      printIterator(it3);
     
     
      return 0;
    }
     
    static void printMultimap(const mmDpII & mm)
    {
      mmDpII::const_iterator it;
      for(it = mm.begin() ; it != mm.end() ; it++)
        cout<<"("<<it->first<<" - ("<<it->second.first<<" - "<<it->second.second<<")) "<<endl;
     
      cout<<endl;
    }
     
    static void printIterator(const mmDpII::iterator & it)
    {
      cout<<"("<<it->first<<" - ("<<it->second.first<<" - "<<it->second.second<<")) "<<endl;
    }

    Merci d'avance

  2. #2
    screetch
    Invité(e)
    Par défaut
    http://www.sgi.com/tech/stl/Multimap.html

    Erasing an element from a multimap also does not invalidate any iterators, except, of course, for iterators that actually point to the element that is being erased.
    erase ne touhe pas aux iterateurs qui ne sont pas affectés par erase

Discussions similaires

  1. Iteration VS recursivité
    Par yacinechaouche dans le forum C
    Réponses: 40
    Dernier message: 16/11/2012, 11h52
  2. [Struts] logic:iterate avec un Vector
    Par laurentb dans le forum Struts 1
    Réponses: 18
    Dernier message: 03/03/2004, 14h42
  3. [débutant][struts] iterate imbriquée
    Par muim dans le forum Struts 1
    Réponses: 6
    Dernier message: 19/02/2004, 15h13
  4. [debutant]iterator
    Par Wis dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 05/05/2003, 10h49
  5. vInt::iterator
    Par Monstros Velu dans le forum C++
    Réponses: 19
    Dernier message: 05/04/2003, 15h06

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