Оценивается ли второй член в foreach Qt только один раз? - PullRequest
2 голосов
/ 05 февраля 2011

Если у меня есть этот код:

foreach (QListWidgetItem *ii, selectedItems()) {
    urls.push_back(ii->data(Qt::ToolTip).toString());
}

Будет ли selectedItems() вызываться только один раз?

1 Ответ

3 голосов
/ 05 февраля 2011

Да. Он создаст копию возвращенного контейнера и будет использовать ее. (См. ключевое слово Qt foreach документация)

Связанный:

  • Поскольку Qt foreach всегда копирует контейнер, его лучше всего использовать либо с QT-контейнерами (которые являются копиями при записи), либо с небольшими контейнерами STL.
  • foreach Boost обрабатывает это лучше и избегает копий без необходимости.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...