с стереть вы изменяете вектор , так что итератор становится недействительным, решение немного модифицирует ваш код:
vector<int> a;
a.push_back(0);
int n=a.size();
int cnt=0;
auto itr=a.begin();
while (itr != a.end())
{
if(*itr == 0)
{
cnt++;
itr = a.erase(itr);
}
else
++itr;
}
Обратите внимание, правильный тип для n и count равен size_type
, а не int