====== STL ======
===== Erasing elements in a loop =====
==== Map ====
Erasing an element does not invalidate other iterators.
bool erase_i;
for(std::map::iterator i = myMap.begin(); i != myMap.end(); erase_i ? myMap.erase(i++) : ++i)
{
erase_i = false;
...
if (want_erase) erase_i = true;
...
}
==== Vector, List ====
Erasing an element do invalidate other iterators.
bool erase_i;
for(std::vector::iterator i = myVec.begin(); i != myVec.end(); erase_i ? i = myVec.erase(i) : ++i)
{
erase_i = false;
...
if (want_erase) erase_i = true;
...
}