почему вектор, выбрасывающий это утверждение, не прошел оповещение?

Я запускаю свой код в режиме отладки, и программа выдает сообщение об ошибке подтверждения. Пожалуйста, помогите мне найти, какая часть приводит к этому провалу утверждения. : {

Debug Assertion Failed!
Expression: vector iterators incompatible

Код:

int main()
{
vector<int> a(5);
fill(a.begin(), a.end(), 5);
a[2] = 3;
a[1] = 2;  //so now a = {5,2,3,5,5}

auto it = a.begin();
for (; it != a.end();)
{
if (*it == 5)
a.erase(it);  //Remove 5
else
it++;
}
copy(a.begin(), a.end(), ostream_iterator<int>(cout, "\n"));
}

1

Решение

Когда вы стираете во время итерации, стертый итератор становится (и другие могут стать) недействительными:

Сделай это:

это = a.erase (это);

5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector