为什么以下代码会产生断言错误:Expression: list iterators incompatible
?
#include <list>
using namespace std;
int main()
{
list<int> a;
a.push_back(1);
list<int>::iterator iter=a.begin();
a.erase(iter);
iter==a.end();
}
答案 0 :(得分:1)
你想要做的是:
#include <list>
using namespace std;
int main()
{
list<int> a;
a.push_back(1);
list<int>::iterator iter=a.begin();
iter = a.erase(iter);
}
答案 1 :(得分:0)
当a
更改时,给定集合a
上的迭代器变为无效,例如删除元素。
答案 2 :(得分:0)
删除iter
时,它会失效。我认为无效的迭代器不能用于除了分配给它们之外的任何东西,甚至不能将它们与任何东西进行比较。您可能想要使用
iter = a.end();
答案 3 :(得分:0)
擦除后迭代器无效。在你的情况下,擦除本身会在你删除最后一个元素
时返回(删除它)结束迭代器