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é }
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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...)
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
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![]()
Partager