c++ 在循环中删除迭代器(映射的映射)
c++ Remove iterator in loop (map of maps)
我有一个地图图,在迭代过程中我需要删除迭代器,如以下代码所示。最好的方法是什么?
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;
}
}
相关文章:
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 映射迭代器与运算符不匹配
- 我可以将映射迭代器与 OpenMP 并行使用吗?
- 取消引用映射迭代器时返回对临时的引用
- 为什么映射迭代器显示基本操作数无效错误
- 复制映射迭代器对值的省略
- ->第一个/第二个到空映射迭代器开始
- 由引用集/映射迭代器传递的迭代器不可取消引用
- 在 GCC 上自动声明映射迭代器错误
- 指向同一项的两个映射迭代器是否保证相等
- 嵌套映射迭代器
- 模板标准::映射::迭代器实例化
- 映射迭代器遍历技术
- 映射迭代器与手动
- VC++11映射和多映射迭代器(重载)C2535
- 切换情况下映射迭代器的交叉初始化
- C++-映射迭代器中的if语句导致程序崩溃的原因
- 映射迭代器:一元'*'的无效类型参数(具有"int")
- 比较未引用的映射迭代器(std::pairs):C2678
- 与C++中擦除映射迭代器的行为不一致