【发布时间】:2012-12-02 17:34:45
【问题描述】:
为什么下面的代码会产生断言错误: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();
}
【问题讨论】:
-
如果你写了
iter=a.end()这会很好,因为你已经替换了无效的迭代器,但是因为你写了iter==a.end(),你正在比较一个无效的迭代器,这会导致不兼容的警告