J'ai un std::vector m_vPaths; je vais itérer ce vecteur et de les appeler ::DeleteFile(strPath) que je vais. Si j'ai réussi à supprimer le fichier, je vais l'enlever à partir du vecteur. Ma question est puis-je obtenir autour avoir à utiliser deux vecteurs? Est-il différent de la structure de données qui pourrait être mieux adapté pour ce que je dois faire?
exemple: en utilisant les itérateurs ne fait presque ce que je veux, mais le problème est qu'une fois que vous effacez à l'aide d'un itérateur, tous les itérateurs de devenir invalide.
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.
}
}
Je peux utiliser deux vecteurs et je n'ai plus de problème, mais est-il mieux, la méthode la plus efficace de faire ce que je suis en train de faire?
btw, au cas où il n'est pas clair, m_vPaths est déclaré comme ceci (dans ma classe):
std::vector<std::string> m_vPaths;