vectorのerase
gccバージョン4.2.4とVisualStudio2005とではstl::vectorのeraseメソッドの挙動が違う…
具体的には
vector<int> a; a.push_back(10); a.push_back(0); a.push_back(11); a.push_back(0); a.push_back(12); a.push_back(0); vector<int>::iterator ite = a.begin(); while( ite != a.end() ){ if( (*ite) == 0 ){ a.erase(ite); }else{ ite++; } }
とやってもgccの方では期待する結果が得られるけど,VisualStudio2005だと…ダメでした。