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 :

mais que fait upper_range() dans un multimap?


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    25
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 25
    Par d�faut mais que fait upper_range() dans un multimap?
    Bonjour.
    J'ai un probl�me avec la fonction membre de la classe multimap dont voici
    le soit disant role selon la norme:
    iterator upper_bound(const key_type& x);
    Returns an iterator to the last element whose key is less than or equal to x. If no such element exists, then end() is returned.
    Apparamment, cette fonction me retourne l' iterateur suivant l'iterateur sur la derniere paire dont la cl� est inf�rieure ou �gale a la cl� passee en argument.
    C'est � dire que si ma cl� est presente il ne me fournit pas un it�rateur sur une paire ayant cette cl�.
    J'utilise BorlandC++Compiler5.5.
    Merci si vous en savez plus.

  2. #2
    mat.M
    Invit�(e)
    Par d�faut
    ?? Normalement d'apr�s la doc , si l'�l�ment n'existe pas c'est end() qui est renvoy�.

    Apparamment, cette fonction me retourne l' iterateur suivant l'iterateur sur la derniere paire dont la cl� est inf�rieure ou �gale a la cl� passee en argument.
    Logique : l'�l�ment selon la cl� const key_type& x n'est pas trouv� dans la liste

  3. #3
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    25
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 25
    Par d�faut
    ??? mat.M a dit:
    ?? Normalement d'apr�s la doc , si l'�l�ment n'existe pas c'est end() qui est renvoy�.
    Logique : l'�l�ment selon la cl� const key_type& x n'est pas trouv� dans la liste
    J'ai justement un �l�ment avec la cl� recherch�e!!?

  4. #4
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    25
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 25
    Par d�faut
    Apparemment je me suis mal exprim� alors un 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
     
    #include<iostream>
    #include<map>
    using namespace std;
    template<class T,class U> void affiche(multimap<T,U> m) {
        cout<<"le map contient "<<m.size()<<" elements:\n";
        multimap<T,U>::iterator it;
        for(it=m.begin();it!=m.end();it++) { 
                 cout<<(*it).first<<" "<<(*it).second<<endl;
        }
    }
     
    main(){
           multimap<int,char> m;
           m.insert(make_pair(4,'a'));
           m.insert(make_pair(2,'z'));
           m.insert(make_pair(4,'b'));m.insert(make_pair(8,'b'));
          multimap<int,char>:: iterator it;
          affiche(m);
          it=m.upper_bound(4);
          if(it!=m.end())  cout<<"\nessai:"<<(*it).first<<" "<<(*it).second<<endl;
    }
    Cela me donne:
    essai:8 b
    alors que je pensais que cela me donnerait
    essai:4 b
    Ce que je souhaiterai savoir c'est si cela est sp�cifique � mon compilo

  5. #5
    mat.M
    Invit�(e)
    Par d�faut
    euuhhh dans l'exemple donn� un "iterateur" iterator est utilis� mais on ne boucle pas;
    C'est normal docteur ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 31
    Par d�faut
    En tout cas, ton compilateur a raison de renvoyer (8,b). Peut-�tre est-ce la doc qui est mal r�dig�e. Voici la sp�cification officielle (C++ Standard, 1998) :
    map::upper_bound( k ) returns an iterator pointing to the first element with a key greater than k

  7. #7
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    25
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 25
    Par d�faut
    ok merci!!!
    Effectivement la doc est mal r�dig�e.De plus Dellannoy dans son bouquin
    a �galement (une fois de plus!) tort.
    En tout cas la c'est clair: http://www.dinkumware.com/manuals/re...p::upper_bound

  8. #8
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    En fait, c'est assez logique : Tout comme end retourne l'�l�ment juste apr�s le dernier, upper_bound retourne l'�l�ment juste apr�s le dernier � �tre �gal � la clef qu'on lui passe. Comme �a, on peut it�rer sans probl�me de lower_bound � upper_bound
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

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

Discussions similaires

  1. Mais que fait IE7 ?
    Par dinguot dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 18/07/2007, 12h39
  2. [Tableaux] Mais que fait cette condition exactement?
    Par pierrot10 dans le forum Langage
    R�ponses: 5
    Dernier message: 21/09/2006, 12h36
  3. [ Eclipse3.0 ] Mais que fait le debogueur ?
    Par Bz dans le forum Eclipse Java
    R�ponses: 5
    Dernier message: 07/07/2005, 14h31
  4. Mais que fait static ???
    Par elsargento dans le forum C
    R�ponses: 4
    Dernier message: 25/09/2003, 09h55

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