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 ?
Version imprimable
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.
exactement:
si key n'existe pas, la paire key/value est créé.Code:
1
2 std::cout << myMap[ key ] << std::endl;
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:
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; }
Ah ok, en effet alors...
*se précipite pour changer son code ^^*