На https://doc-snapshots.qt.io/qtcreator-extending/coding-style.htmlрекомендуется писать для циклов вида следующее:
Container::iterator end = large.end();
for (Container::iterator it = large.begin(); it != end; ++it) {
//...;
}
вместо
for (Container::iterator it = large.begin(); it != large.end(); ++it) {
//...;
}
Поскольку я редко встречал этот стиль в любом коде, я хотел бы знать, действительно ли последовательный вызов end() добавляет заметные накладные расходы во время выполнения для больших циклов по контейнерам stl или оптимизируют ли уже компиляторы такие случаи.
Редактировать: Как отмечают многие из очень хороших комментариев: этот вопрос действителен только в том случае, если код внутри цикла не изменяет конечный итератор. В противном случае конечно повторный вызов end обязателен.