2017-07-24 1 views
0

J'ai une carte des cartes et pendant l'itération j'ai besoin de supprimer l'itérateur comme je le montre dans le code suivant. Quelle est la meilleure façon de procéder?C++ Enlever l'itérateur dans la boucle (carte des cartes)

for (Map1_t::iterator itOutMap = map1.begin(); itOutMap != map1.end(); ++ itOutMap) 
    { 
    for (Map2_t::iterator itInMap = itOutMap->second.begin(); itInMap != itOutMap->second.end(); ++itInMap) 
    { 
     if (itInMap->first == USER_REQ_TYPE) 
     { 
     // need to delete the current itInMap 
     } 
    } 
    } 

Répondre

1

Vous pouvez utiliser std::map::erase()http://en.cppreference.com/w/cpp/container/map/erase l'exemple dans cette page fait exactement ce que vous demandez

for (Map1_t::iterator itOutMap = map1.begin(); itOutMap != map1.end(); ++ itOutMap) 
    { 
    for (Map2_t::iterator itInMap = itOutMap->second.begin(); itInMap != itOutMap->second.end();) 
    { 
     if (itInMap->first == USER_REQ_TYPE) 
     { 
     itInMap=itOutMap->second.erase(itInMap); 
     } 
     else ++itInMap; 
    } 

    } 
+0

Merci. Sa résolution;) – RMRMaster