安全なSTL listの要素削除ループ

Posted on Sun 15 November 2009 in C++

erase(itr)を呼び出すとitrは使えなくなるので、
erase()の返り値で次の要素のイテレータを受け取りループを続行する。

list<int>::iterator itr = SampleList.begin();
for (; itr != SampleList.end(); ) {
  if( 条件 ) {
    itr = SampleList.erase( itr );
    continue;
  }
  it++;
}