В 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 или компиляторы уже оптимизируют такие случаи.
Изменить: Как многие из очень хороших комментариев отметили: этот вопрос действителен только в том случае, если код внутри цикла не изменяет конечный итератор. В противном случае, конечно, повторный вызов конца является обязательным.