List iterator not incrementable!!!!

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • jaki1910
    New Member
    • Aug 2010
    • 2

    #1

    List iterator not incrementable!!!!

    Hi guys
    correct me plz:
    i have this error just when i put liste.erase(it) ;

    Debug assertion Failed
    ....
    Expression: List iterator not incrementable.

    Code:
    for(list<student>::iterator it=liste.begin();it!=liste.end();it++){
    	if((it->getsexe()=='f')||(it->getsexe()=='F')){
    			tab[j].setNom(it->getNom());
    			
    			liste.erase(it);
    			j++;
    		}
    }
    for(list<student>::iterator it=liste.begin();it!=liste.end();it++){
    		it->display();
    		cout<<endl;
    	}
    Can anyone plz help me...


    Thank u
  • newb16
    Contributor
    • Jul 2008
    • 687

    #2
    Because erase invelidates iterator to erased element

    all of the previously obtained iterators and references remain valid after the erasing operation and refer to the same elements they were referring before (except, naturally, for those referring to erased elements).

    The code may use the return value of erase:
    Code:
    for(...;...;/*no it++ here*/)
    {
      if (condition)
      {
        it = list.erase(it);
      }
      else
        it++;
    }

    Comment

    • jaki1910
      New Member
      • Aug 2010
      • 2

      #3
      thank u so much :)

      Comment

      Working...