Bonjour,
j'utilise la fonction find de std::map:
comment savoir si elle a trouver ou non une occurence correspondant au critere?
Code : Sélectionner tout - Visualiser dans une fenêtre à part itertor it = myMap.find( Id );
Merci
Ben
Bonjour,
j'utilise la fonction find de std::map:
comment savoir si elle a trouver ou non une occurence correspondant au critere?
Code : Sélectionner tout - Visualiser dans une fenêtre à part itertor it = myMap.find( Id );
Merci
Ben
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (it != myMap.end()) { // Trouvé }
je pensais que l'on pouvais faire un truc du style
mais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 itertor it = myMap.find( Id ); if( it ) {...}me va tres bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (it != myMap.end()) { // Trouvé }
le seul hic (peu etre?) c'est si l'element trouve est le dernier du map, que va donnée la comparaison avec myMap.end() ?
.end() c'est l'element apres le dernier. Donc il n'y a pas de probleme.Envoyé par Blowih
Merki.Envoyé par Jean-Marc.Bourguet
juste pour savoir, si je faitit pointe sur le dernier ellement ou sur l'element d'apres?
Code : Sélectionner tout - Visualiser dans une fenêtre à part it= myMap.end();
( je mets quand meme resolu)
Celui d'apres.Envoyé par Blowih
donc je peux pas faire un truc du stylesi je veux apeler une fonction sur le dernier element du map
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 it= myMap.end(); it->second->uneFonction();
Exact. Et front() et back() n'existe pas sur les map. DoncEnvoyé par Blowih
Code : Sélectionner tout - Visualiser dans une fenêtre à part (--myMap.end())->second->uneFonction()
Désolé de répondre dans un topic fermé, mais une question me vient à l'esprit:
Quelle est la différence entreet
Code : Sélectionner tout - Visualiser dans une fenêtre à part --map.end()?
Code : Sélectionner tout - Visualiser dans une fenêtre à part map.rbegin()
Je m'appercois que j'ai toujours utilisé l'operateur ++ sur les iterateurs, et donc des reverse_iterators pour parcourir à l'envers.
Si on peut utiliser -- aussi, quel est l'intéret des reverse_iterators ?
Mais begin() et rbegin() suffisent, non ?Et front() et back() n'existe pas sur les map
(on peut utiliser les reverse_iterators sur n'importe quel reversible container, donc les deque, list, vector, map, multimap, set et multiset)
je pense que -- sur un iterator ne marche que si l'itérateur en question est bidirectionnel (ce ne doit pas être le cas de certains adaptateurs de conteneurs...)
Si tu fournis des reverse_iterator mais pas -- sur tes iterators, a priori tu as un probleme dans ta conception. Il est possible que ce soit comprehensible pour certaines structures de donnees, mais je n'en vois pas pour le moment.Envoyé par Médinoc
A propos de la question initiale, il n'y a pas reellement de difference entre faire des -- sur un iterator et des ++ sur un reverse_iterator; mais les expressions a utiliser dans le premier cas sont un peu delicate. Essaie d'exprimeravec des iterators. reverse_iterator gere ca pour toi (il y a une classe template dans la norme qui fait la transformation).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for (ReverseIterator i = c.rbegin(), e = c.rend(); i != e; ++i) { ... }
Oui c'est vrai, je pense que la même chose avec un iterator normal obligerait à faire un cas particulier pour le premier élément:
(à moins qu'on puisse faire le test ite >= map.begin() ? )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for( Iterator ite = --map.end(); ite!=map.begin(); --ite) { // traitement } // traitement pour le premier
Enfin je suis bien d'accord, et de toute façon le code est plus clair avec des reverse_iterators
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager