2017-07-24 73 views
0

我有一个映射的地图,在迭代期间我需要删除迭代器,就像我在下面的代码中显示的一样。做这个的最好方式是什么?C++删除循环中的迭代器(地图的地图)

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 
     } 
    } 
    } 

回答

1

您可以使用std::map::erase()http://en.cppreference.com/w/cpp/container/map/erase的例子在页面做你问什么

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

感谢。它的解决;) – RMRMaster