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

Respuestas a la pregunta(1)

Su respuesta a la pregunta