[C++]Utilisation du find avec une map
Fermé
mbenmoussa
Messages postés
4
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
1 septembre 2006
-
4 avril 2006 à 12:12
mamiemando Messages postés 33636 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2025 - 5 avril 2006 à 00:09
mamiemando Messages postés 33636 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2025 - 5 avril 2006 à 00:09
A voir également:
- [C++]Utilisation du find avec une map
- Google map satellite gratuit - Guide
- Notice d'utilisation - Guide
- Utilisation chromecast - Guide
- Itinéraire google map entre deux adresses - Guide
- Telecharger carte google map - Guide
3 réponses
mamiemando
Messages postés
33636
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
18 avril 2025
7 842
4 avril 2006 à 12:34
4 avril 2006 à 12:34
Dans une map seule la clé est propre à chaque élément de la map. Cela signifie que tu peux avoir dans une map (k1,d1) (k2,d2) vu que k1!=k2.
Pour l'insertion tu peux utiliser directement l'opérateur [] :
Pour rechercher un élément :
Bonne chance
Pour l'insertion tu peux utiliser directement l'opérateur [] :
my_map[k1]=d1;
Pour rechercher un élément :
std::map<std::string,int> my_map; my_map["janvier"]=1; my_map["fevrier"]=2; //... std::map<std::string,int>::const_iterator mit(my_map.find("fevrier")), mend(my_map.end()); if(mit!=mend){ std::cout << "trouvé ! "<< mit->first << " "<< mit->second << std::endl; }else{ std::cout << "pas trouvé !"; } std::cout << std::endl;
Bonne chance
mbenmoussa
Messages postés
4
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
1 septembre 2006
1
4 avril 2006 à 13:55
4 avril 2006 à 13:55
Merci pour ta réponse. Le problème est toujours le même, il n'arrive pas à trouver l'élément, d'autant plus que la méthode de comparaison du find s'appuie sur des opérateurs pré-définis. Dans ton exemple, le find utilise la méthode de comparaison des string. Dans mon cas, je compare des objets d'une classe quelconque, et c'est pour ça que j'ai dû lui définir l'opérateur <, car sinon il n'acceptait pas la map.
Je pense que t'as dû te dire que je comparais les 2 éléments, au fait je compare bien les clés des 2 éléments à insérer (ident_map est de type C_Key).
Je pense que t'as dû te dire que je comparais les 2 éléments, au fait je compare bien les clés des 2 éléments à insérer (ident_map est de type C_Key).
mamiemando
Messages postés
33636
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
18 avril 2025
7 842
5 avril 2006 à 00:09
5 avril 2006 à 00:09
Par défaut une map utilisera en fait l'opérateur less qui est défini pour les string entre autres (ordre alphabétique). Si ta clé est "un type de base" tu n'as a priori pas besoin de le redéfinir. Dans ton cas il faut redéfinir un operateur, mais j'aurais plutôt utilisé un foncteur que < :
http://c.developpez.com/faq/cpp/?page=STL#STL_functor
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583
Malheureusement il me faut le morceau de ton code en question pour que je vois d'où vient le problème...
Bonne chance
http://c.developpez.com/faq/cpp/?page=STL#STL_functor
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583
Malheureusement il me faut le morceau de ton code en question pour que je vois d'où vient le problème...
Bonne chance