我有一個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