Search code examples
c++stliteratorerase

STL iterator: Assertion Error


Why does the following code produce an assertion error: 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();
}

Solution

  • What you want to do is this:

    #include <list>
    using namespace std;
    
    int main()
    {
        list<int> a;
        a.push_back(1);
        list<int>::iterator iter=a.begin();
        iter = a.erase(iter);
    }