我想从一个正在使用范围for循环的容器中删除一个元素。这样做会导致未定义行为吗?还是在调用erase()
之后,element
的下一个值将是如果我没有调用erase()
时应该是的下一个元素的值?
例如:
std::map<int, int> someMap;
/* Fill in someMap */
for (auto& element : someMap)
{
/* ... */
if ( /* Some condition */ )
someMap.erase(element.first);
}