gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 01:29:34 25 4
gpt4 key购买 nike

我有一个对象列表,我想在某个对象满足 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com