Supponiamo di avere una mappa STL in cui i valori sono puntatori e voglio eliminarli tutti. Come rappresenterei il seguente codice, ma facendo uso di std :: for_each? Sono contento che le soluzioni utilizzino Boost.Come utilizzerei for_each per cancellare ogni valore in una mappa STL?
for(stdext::hash_map<int, Foo *>::iterator ir = myMap.begin();
ir != myMap.end();
++ir)
{
delete ir->second; // delete all the (Foo *) values.
}
(ho trovato Boost checked_delete
, ma non sono sicuro di come applicare che al pair<int, Foo *>
che l'iteratore rappresenta).
(Inoltre, ai fini di questa domanda, ignorare il fatto che la memorizzazione di puntatori non elaborati che devono essere eliminati in un contenitore STL non è molto ragionevole).
Nota: in seguito ho trovato ed elencato una risposta su una riga in basso ... ma il codice è piuttosto orribile, quindi ho accettato la risposta più sicura di GMan.
Uso piacevole dell'operazione di pre-elaborazione sul tuo iteratore! –