Std::map::iterator itr = mapObj.begin;
For(; itr != mapObj.end(); itr++)
{
If(itr->second == 0)
mapObj.erase(itr); //error, it will be invalid
}
Good way:
For(; itr != mapObj.end();)
{
If(itr->second == 0)
{
mapObj.erase(itr++);//it will not indicate the removed one
}
Else
Itr++;
}