if you need to erase an element inside of a for-loop, do the following: int i = 0; while(i < vec.size()){ if(condition) vec.erase(vec.begin() + i); else ++i; }