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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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