Действительно ли итераторы, указывающие на элементы QList, все еще действительны после выполнения какой-либо операции удаления из QList?
Мне нужно удалить некоторый элемент из QList, поэтому я сохраняю итераторы для этих элементов в другом контейнере, а затем беру эти сохраненные итераторы и использую их для удаления необходимых элементов из QList.
Это выглядит так:
// inside a loop for 'list'
QList<type>::iterator it = list.begin() + j;
removing.append(it);
// end of loop for 'list'
...
while(removing.empty() == false)
{
list.erase(removing.takeFirst());
}
Таким образом, когда контейнер removing
содержит более 1 элемента, происходит сбой приложения (SEGMENTATION FAULT) при попытке удалить второй элемент, тогда как первый был успешно удален.
В чем причина и есть ли способ удалить элементы с помощью итераторов?