[转]vector iterator not incrementable 的问题

转自:http://blog.csdn.net/kuaile123/article/details/11105115

vector::erase误使用问题:

  暂时使用经验: 不能在循环中使用,否则会报如题错误。

2014/03/11更新:循环删除容器中符合条件的元素

  《C++ Primer(Edit 5)》, P.349

  Both forms of erase return an iterator referring to the location after the(last) element that was removed.That is, if j is the element following i, then erase(i) will return an iterator referring to j.

  Example:

    list<int> lst = {0,1,2,3,4,5,6,7,8,9}

    auto it = lst.begin();

    while (it != lst.end())

    {

      if (*it % 2)

        it = lst.erase(it);

      else

        ++it;

    }

原文地址:https://www.cnblogs.com/azor/p/3591062.html