Invalidación del iterador en boost :: unordered_map
estoy usandoboost::unordered_map
como sigue
typedef boost::shared_ptr<WriterExeciter> PtrWriter;
typedef std::list<PtrWriter> PtrList;
boost::unordered_map<std::pair<unsigned int, unsigned long long>, PtrList> Map
Map instrMap;
Ahora estoy haciendo algunos cambios en la lista de tiposPtrList
en un bucle
for(auto it = instrMap.begin(); it != instrMap.end(); ++it)
{
auto key = it->first();
auto list& = it->second();
//Make some change to an element in list
if(list.empty())
{
instMap.erase(key);
}
}
¿Hacer cambios a la lista invalida el iterador a instrMap?
Borrar el elemento invalidará el iterador que apunta al elemento borrado. ¿Cómo modifico mi código para que esto no cause ningún problema? Hace usoit++
en lugar de++it
¿ayuda?
Gracias