0
gccで次のコードをコンパイルして実行すると、うまく動作します。私はコンパイルしてVCでこのコードの平和を実行する場合は++、それは失敗し、ポップアップは言う: 「式:ベクターは、互換性のないイテレータ」gccでコンパイルされたC++は有効であり、VC++では無効です。
int main() {
vector<int> v = { 1,2,3,4 };
for(auto it = v.begin(); it != v.end();)
{
if(*it% 2 == 0)
{
v.erase(it);
}else
{
++it;
}
}
return 0;
}
技術的には、Visual StudioまたはVisual C++ではエラー(またはデバッグアサーション)が発生しません。デバッグランタイムライブラリによって生成されます。 – IInspectable
['it'は無効になります](http://www.cplusplus.com/reference/vector/vector/erase/)(「反復子の有効性」を参照) – ForceBru
エラーとは無関係に、' std: :remove_if'このようなループではなく? –