Это не относится к исходной проблеме, опубликованной выше, но поиск Google по ошибке приводит меня на эту страницу, поэтому я публикую ее здесь, чтобы все могли ее увидеть.
Я недавно столкнулся с этим сообщением об ошибке ивсе строки кода проверены (не было «стирания» или чего-либо подобного; вектор был просто прочитан).
В конце концов, я понял, что есть проблема с вложенными циклами.
ДляНапример, рассмотрим что-то вроде этого:
`for (it=begin(); it!=end();i++)
{
for (; it!=end();i++)
{
}
}`
Когда вы закончите с вложенным циклом, он будет увеличивать итератор - и затем родительский цикл будет увеличивать его снова (!), в конечном итоге делая шаг итераторачерез конец ().Т.е. было бы "end () + 1", если бы была такая вещь.Следовательно, родительский цикл выдает эту ошибку при следующей проверке.
Чтобы обойти это, я в итоге вставил эту строку после дочернего цикла:
`if (it == vStringList.end()) --it;`
Грязно, но работает: D
Я знаю, что это может быть очевидным для некоторых, но я какое-то время ломал голову над этим, смеется