【发布时间】:2020-06-30 04:26:58
【问题描述】:
如何删除 C++ 列表中迭代器指向的元素?为什么这不起作用?
int main()
{
list<int> l;
l.push_back(5);
l.push_back(6);
for(auto &it: l)
{
l.erase(*it);
}
return 0;
}
【问题讨论】:
-
在迭代项目时从
std::vector中删除项目是不好的。查阅std::vector::erase的文档和示例代码,了解如何安全使用。 -
还有
clear方法可以从列表中删除所有元素。 -
为什么这不起作用:1)在
for(auto &it: l)中,是int,而不是迭代器,所以erase不会接受它。 B) 如果你确实有一个迭代器,eraseing it inlist让你有一个迭代器指向一个不再在列表中的项目。您不能使用它来查找list中的下一项。