By Yasunori Osana on April 9, 2008 12:30 AM | Permalink | Comments (0) | TrackBacks (0) 条件にマッチする要素を順に検索して削除すると、削除したときに iterator が無効になる。 vector なら、erase() が削除後に有効な次の要素への iterator を返してくれるので、 for (std::vector::iterator i = v.begin(); i != v.end(); ){ if ( condition ) i = v.erase(i); else i++; } map だと、iterator を返してくれないので、 for (std::map::iterator i = m.begin(); i != m.end(); ){ if (condition)