How do you remove elements from a std::vector while iterating? [duplicate]
The erase() method returns a new (valid) iterator that points to the next element after the deleted one. You can use this iterator to continue with the loop: std::vector<std::string>::iterator iter; for (iter = m_vPaths.begin(); iter != m_vPaths.end(); ) { if (::DeleteFile(iter->c_str())) iter = m_vPaths.erase(iter); else ++iter; }