Удалить элемент из QStringlist с помощью итератора

Я пытаюсь перебрать QStringList, распечатав строку, а затем удалив ее из списка. Я не могу найти QStringList метод, который работает! Например:

for ( QStringList::Iterator it = commandList.begin(); it != commandList.end(); ++it ) {
out << "Processed command: " << *it << endl;
*it.erase();
}

выдает ошибку компилятора: У ‘QList :: Iterator’ нет члена с именем ‘erase’

  1. Как бы удалить элементы, на которые в данный момент указывает итератор?
  2. Безопасно ли удалить его в петле? (Поскольку ++it может произойти сбой, если я удалю элемент в середине списка)

1

Решение

Другим решением является использование QMutableStringListIterator, он может использоваться как любой другой итератор, но у него есть метод «удалить», который вы ищете.

 QMutableStringListIterator i(list); // pass list as argument
while (i.hasNext()) {
i.remove();                      // delete current item
}
7

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

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

По вопросам рекламы [email protected]