我有一个std :: vector m_vPaths;我会迭代这个向量并随时调用:: 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_vPaths声明如下(在我的课):
std::vector<std::string> m_vPaths;
此外,我不''真正的情况下,它使用什么样的数据结构,如果有更好的东西比矢量让我知道。我不认为std :: queue或std :: list有任何帮助我的东西(虽然我可能是错的:) – cchampion 2009-10-22 01:43:23