最佳答案
我有一个 std: : Vector m _ vPath; 我将迭代这个向量并在执行时调用: : DeleteFile (strPath)。如果我成功地删除了文件,我将从向量中删除它。我的问题是我是否可以避免使用两个向量?是否有不同的数据结构更适合我需要做的事情?
例如: 使用迭代器几乎可以达到我想要的效果,但问题是一旦使用迭代器擦除,所有的迭代器都会变得无效。
std::vector<std::string> iter = m_vPaths.begin();
for( ; iter != m_vPaths.end(); iter++) {
std::string strPath = *iter;
if(::DeleteFile(strPath.c_str())) {
m_vPaths.erase(iter);
//Now my interators are invalid because I used erase,
//but I want to continue deleteing the files remaining in my vector.
}
}
我可以使用两个向量,我将不再有一个问题,但有一个更好的,更有效的方法,做我正在尝试做什么?
顺便说一下,如果不清楚,m _ vPath 的声明如下(在我的类中) :
std::vector<std::string> m_vPaths;