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 :

Existence d'un élément dans une map


Sujet :

SL & STL C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 28
    Points
    28
    Par défaut Existence d'un élément dans une map
    Bonjour,

    j'utilise dans un programme une map d'objets, référencés par leur nom (un CString).
    La forme est donc la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map<CString, monObjet> maMap;
    J'aurais besoin de tester si un objet dont le je connais le nom existe dans la table, c'est-à-dire s'il existe un maMap[leNomQuiMinteresse].

    Pour une CMap, on peut utiliser Lookup, mais quid d'une map "toute conne" ?

    Merci.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    std::map<CString, monObjet>::iterator It = maMap.find("truc");
    if (It != maMap.end())
    {
        // Trouvé
    }
    else
    {
        // Pas trouvé
    }

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 28
    Points
    28
    Par défaut
    Parfait, merci beaucoup

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    On peut peut-être juste préciser qu'il faut être attentif à la "const-correctness" de la fonction dans laquelle le code se placera:
    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
    void fonction()
    {
        /* le code fourni fonctionne sans problème */
    }
    void fonction_const() const
    {
        /* nécessite l'utilisation d'un const_iterator */
        std::map<CString, monObjet>::const_iterator It = maMap.find("truc");
        if (It != maMap.end())
        {
            // Trouvé
        }
        else
        {
            // Pas trouvé
        }
    }

  5. #5
    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 : 50
    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
    Points : 16 213
    Points
    16 213
    Par défaut
    Plutôt que find, pour ce genre de choses, je trouve plus simple d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maMap.count("toto") != 0;

  6. #6
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Plutôt que find, pour ce genre de choses, je trouve plus simple d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maMap.count("toto") != 0;
    Oui, c'est le mieux lorsque l'on n'a pas besoin d'accéder à la valeur de maMap["toto"].

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    On peut aussi écrire le premier comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maMap.find("truc") != maMap.end();

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

Discussions similaires

  1. NullPointerException ajout d'un élément dans une Map
    Par pandora19 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 11/11/2012, 16h45
  2. Insertion d'un élément vide dans une map.
    Par jamsgoodon dans le forum Débuter
    Réponses: 2
    Dernier message: 24/03/2011, 13h51
  3. Recherche d'un élément dans une map
    Par Bash01 dans le forum Débuter
    Réponses: 2
    Dernier message: 03/05/2010, 09h54
  4. Réponses: 3
    Dernier message: 25/01/2009, 17h32
  5. Réponses: 8
    Dernier message: 03/05/2006, 20h10

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