Supposons que j'ai une carte STL où les valeurs sont des pointeurs, et je veux les supprimer tous. Comment représenter le code suivant, mais en utilisant std :: for_each? Je suis heureux pour les solutions à utiliser Boost.Comment utiliser for_each pour supprimer toutes les valeurs d'une carte STL?
for(stdext::hash_map<int, Foo *>::iterator ir = myMap.begin();
ir != myMap.end();
++ir)
{
delete ir->second; // delete all the (Foo *) values.
}
(j'ai trouvé checked_delete
de Boost, mais je ne suis pas sûr de savoir comment l'appliquer à la pair<int, Foo *>
que le iterator représente).
(De même, pour les besoins de cette question, ignorez le fait que stocker des pointeurs bruts qui ont besoin d'être supprimés dans un conteneur STL n'est pas très judicieux).
Note: J'ai trouvé et listé ci-dessous une réponse d'une ligne ci-dessous ... mais le code est assez horrible, donc j'ai accepté la réponse de GMan.
Joli usage de l'opération de pré-cryptage sur votre itérateur! –