c++迭代对象列表并删除对象

标签 c++ list object iterator

我有一个对象列表,我想在某个对象满足 if 条件时将其删除。但我在使用它时遇到了问题。主要是因为 if 条件抛出错误。

我也不知道是否需要创建一个临时文件夹值并将其作为我的 if 条件?老实说,我对迭代器有点困惑,任何额外的信息都可能会有帮助。

void removeFolder(string fName)
{
    list<Folder> folders = this->getFolders();
    for (list<Folder> itr = folders.begin(); itr != folders.end();)
    {
        if (fName == *itr)
            itr = folders.erase(itr);
        else
            ++itr;
    }
}

最佳答案

我认为你的想法是正确的,但你做错了。文件夹是:

list<Folder> folders

比起迭代不同的元素“文件夹”而不是“文件夹”:

for (list<folder> itr = folders.begin(); itr != folders.end();)

我认为这应该是:

for (list<Folder>::iterator itr = folders.begin(); itr != folders.end();)

现在,一旦您迭代正确的对象,就可以进行有意义的比较,而不是字符串到对象:

if (fName == *itr)

而是将字符串与字符串进行比较,我假设您的 Folder 类有一些获取文件夹名称的方法,即:

if (fName == (*itr).getFolderName())

关于c++迭代对象列表并删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52212818/

相关文章:

c++ - 使用 ncurses 和 cmake 链接期间 undefined reference

c++ - 无法链接到 boost 库

python - Python 列表的输出有问题

javascript - 循环遍历对象数组中的每个属性

scala - scala中的对象实例化变体

javascript - 对象/数组的深度比较

c++ - 如何在 C++ 中使用 boost 制作正则表达式?

c++ - 朴素表面网络算法 : how to connect vertices to form triangles?

c - 创建列表并打印其元素时出错

python - 如何使用协程在两个列表之间交替打印?