我有一张地图,在迭代过程中,我需要删除迭代器,如下面的代码所示。做这个的最好方式是什么?
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
}
}
}
最佳答案
您可以使用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;
}
}