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 :

Intérêt du find dans une map ?


Sujet :

SL & STL C++

  1. #1
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut Intérêt du find dans une map ?
    Bonjour à tous,

    Ayant réussi à mettre en place ma map, je me demandais quel était l'intérêt du find, puisque qu'il suffit que je fasse M[key] pour trouver ma valeur, non ?

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Points : 444
    Points
    444
    Par défaut
    Citation Envoyé par Mindiell Voir le message
    Bonjour à tous,

    Ayant réussi à mettre en place ma map, je me demandais quel était l'intérêt du find, puisque qu'il suffit que je fasse M[key] pour trouver ma valeur, non ?
    Si M[key] n'existe pas, la paire (key, valeur par défaut) sera insérée automatiquement dans ta map.

    Alors que le find retourne un itérateur, que tu peux comparer avec M.end() pour voir si ton élément était dans la map sans pour autant que ça le rajoute s'il n'y était pas.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    exactement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      std::cout << myMap[ key  ] << std::endl;
    si key n'existe pas, la paire key/value est créé.

    Généralement il vaut mieux se méfier des operator[] sur les containers et dans la plupart des cas, il vaut mieux utiliser une méthode plus safe ( comme pour les vector où operator[] ne fait pas de range checking alors que la méthode at() le fait ).

    à utiliser comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       typedef std::map< Key, Value > Map;
       Map myMap;
     
       Map::iterator element = myMap.find( key );
       if ( element != myMap.end() )
       {
          std::cout << element.second << std::endl;
       }

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Ah ok, en effet alors...
    *se précipite pour changer son code ^^*

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

Discussions similaires

  1. Problème de récupération dans une map
    Par sacdenoeud dans le forum C++
    Réponses: 7
    Dernier message: 26/03/2006, 08h40
  2. allocation dans une <map>
    Par elekis dans le forum C++
    Réponses: 3
    Dernier message: 28/09/2005, 22h30
  3. Destruction dans une map
    Par Clad3 dans le forum C++
    Réponses: 3
    Dernier message: 21/08/2005, 08h45
  4. Inserer des elements dans une map sans rangement ?
    Par Muetdhiver dans le forum C++
    Réponses: 3
    Dernier message: 07/09/2004, 11h09
  5. problème de références _ptr dans une map STL
    Par Mr_Tyu dans le forum CORBA
    Réponses: 1
    Dernier message: 10/08/2004, 10h39

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