Bonjour,
dans la faq,
il existe ce code pour enlever les element d'un contenaire
En y reflechissant, pourquoi cela est correcte??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 std::vector v; v.erase(std::remove_if(v.begin(), v.end(), std::bind2nd(std::greater<int>(), 3)), v.end());
avant le erase, std::remove_if et v.end sont appelé l'un aprés l'autre. Seulement es ce bien sur que ce soit dans cette ordre?
Par exemple si v.end() est appelé en premier puis remove_if, le resultat de v.end est erroné!!
Pour un vector ca va souvent marcher car les iterator sont souvent un simple pointeur et que la memoire est contigue.
Mais pour les autres???
ce code me semble plus correcte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 std::unContenaire<x>::iterator newEnd = std::remove_if(v.begin(), v.end(), std::bind2nd(std::greater<int>(), 3)); v.erase(newEnd , v.end());
Partager