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だと…ダメでした。