[C++/STL] Fonction générique pour supprimer les éléments d'une std::map
Bonjour à tous,
Après les vectors, j'ai découvert les "map" qui sont bien utiles pour utiliser des collections de type cle/valeur.
Cependant, je souhaite supprimer tous les éléments de mes maps à l'aide d'une fonction générique et du for_each() :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
struct DeleteBitmap
{
void operator()(std::map<int, BITMAP*>* p) const // on peut modifier le paramètre mais pas le foncteur
{
libererBitmap(p->second); // fonction qui libère un BITMAP*
p = NULL;
}
};
// son appel serait :
for_each(mapTotale.begin(), mapTotale.end(), DeleteBitmap()); |
Problème ca ne compile pas sur la ligne "p->second" car second n'est pas un membre de p (logique)...
Actuellement, j'utilise une boucle mais je préfèrerais le template :
Code:
1 2 3 4 5 6 7
|
map<int, BITMAP*>::iterator pos;
for (pos = mapTotale.begin(); pos != mapTotale.end(); ++pos)
{
libererBitmap(pos->second);
pos->second = NULL;
} |
Et cela marche avec la boucle...
Voilà si vous pouviez me débloquer ;)
Merci beaucoup ! et bonnes fêtes de fin d'année :ccool: