This is the edited code
vector<vector<int> > vec; vector<vector<int> >::iterator vit; vector<int>::iterator it; for ( vit = vec.begin(); vit != vec.end(); ++vit) { it = vit->begin(); while(it != vit->end()) { while(it != vit->end()) { if( condition ) { while( condition ) { //going back to certain it //erase an element it = vit->erase(it); } } else ++it; } ++it; } }
The inner while loops back to certain point. Link missing. Erasing element without copying iterator and without memory leakage in back loop and again forward?