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で削除後のイテレータを受け取っているのがミソ。