Qt: возможно ли удаление элементов QList во время итерации с использованием макроса foreach?

Я новичок в Qt и пытаюсь выучить идиомы.

foreach документация говорит:

Qt автоматически берет копию контейнера, когда он входит в цикл foreach. Если вы измените контейнер во время итерации, это не повлияет на цикл.

Но это не говориткак удалить элемент во время итерации сforeach, Мое лучшее предположение что-то вроде:

int idx = 0;
foreach (const Foo &foo, fooList) {
  if (bad(foo)) {
    fooList.removeAt(idx);
  }
  ++idx;
}

Кажется уродливым, чтобы иметь объемidx вне цикла (и вообще поддерживать отдельный счетчик цикла).

Кроме того, я знаю, чтоforeach делает копиюQList, что дешево, но что происходит, когда я удаляю элемент - это все еще дешево или происходит дорогостоящее копирование при модификации? Да,глубокая копия бывает.

РЕДАКТИРОВАТЬ : Это не похоже на идиоматический Qt.

for (int idx = 0; idx < fooList.size(); ) {
  const Foo &foo = fooList[idx];
  if (bad(foo)) {
    fooList.removeAt(idx);
  }
  else ++idx;
}

Ответы на вопрос(3)

Ваш ответ на вопрос