STLのlistの要素をループ中に削除する
例として、list中の負の値を持つ要素を削除するもの
std::list<int> iList; /* 略 */ std::list<int>::iterator itr, itrEnd; for(itr = iList.begin(); itr!=iList.end(); ){ if(*itr < 0){ itr = iList.erase(itr); continue; } itr++; }
eraseで削除後のイテレータを受け取っているのがミソ。