2015-03-07 2 views
-4

Я пытаюсь сбросить итератор после того, как были удалены, идяСброс итератор в цикле после удаления

while (vBegin != vEnd) 
{ 
    //some stuff; 
    vectorThing.erase(vbegin); 
    vbegin = vectorThing.begin(); 
    vEnd = vectorThing.end(); 
} 

Это приводит к Венд равным вещь, которую я просто удалил, как я могу получить его, чтобы указать на очень конец, как раньше?

+1

'Это приводит к Венд равным, что я просто deleted' Нет, это не делает. Что бы вы не дали вам эту идею? –

+0

Я вошел в отладчик, и это было так, – randomname

+1

Что, если есть, это отношения между 'vbegin' и' vBegin'? –

ответ

0

Знаете ли вы, что ваш контейнер пуст? Если это так, то функция end() возвращает то же значение итератора, что и вектор :: begin(). Возможно, это то, что вы видите? Например, если размер вашего контейнера равен 1, и вы просто удалили свой первый элемент, тогда вы застряли бы с тем же начальным и конечным элементом.

0

Попробуйте следующим образом

while (vBegin != vectorThing.end()) 
{ 
    //some stuff; 
    vBegin = vectorThing.erase(vbegin); 
} 

или

while (vBegin != vEnd) 
{ 
    //some stuff; 
    vBegin = vectorThing.erase(vbegin); 
    vEnd = vectorThing.end(); 
} 
Смежные вопросы