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