Удалить элемент из 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 может выйти из строя, если я удалю элемент в середине списка)

person TSG    schedule 29.09.2013    source источник


Ответы (1)


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

 QMutableStringListIterator i(list); // pass list as argument
 while (i.hasNext()) { 
     i.remove();                      // delete current item
 }
person FabioDch    schedule 29.09.2013