vector 的 erase 方法的行为不一致问题
昨天无意中发现这个
vector<int> vecint;for (int i=0;i<5;i++){ vecint.push_back(i);}vector<int>::iterator itr = vecint.begin();vector<int>::iterator itrtemp;while ( itr!=vecint.end()){ itrtemp = itr++; if (*itrtemp == 4) { vecint.erase(itrtemp); //*itrtemp == 2, itr 4 //*itrtemp == 3, itr 4 //*itrtemp == 4, crash cout<<"itr "<<*itr<<endl; } }