首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >迭代向量,边走边删除某些项目

迭代向量,边走边删除某些项目
EN

Stack Overflow用户
提问于 2009-10-22 09:37:07
回答 1查看 71.7K关注 0票数 71

我有一个std::vector m_vPaths;我将迭代这个向量,并在运行过程中调用::DeleteFile(strPath)。如果我成功地删除了该文件,我将从向量中删除它。我的问题是,我能避免使用两个向量吗?有没有不同的数据结构可以更适合我需要做的事情?

例子:使用迭代器几乎是我想要的,但问题是一旦你使用迭代器擦除,所有的迭代器都会变得无效。

代码语言:javascript
复制
 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是这样声明的(在我的类中):

代码语言:javascript
复制
std::vector<std::string> m_vPaths;
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1604588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档