Я вижу много кода на C ++, который выглядит следующим образом:
for( const_iterator it = list.begin(),
const_iterator ite = list.end();
it != ite; ++it)
В отличие от более сжатой версии:
for( const_iterator it = list.begin();
it != list.end(); ++it)
Будет ли разница в скорости между этими двумя соглашениями? Наивно первый будет немного быстрее, так как list.end () вызывается только один раз. Но поскольку итератор является константным, создается впечатление, что компилятор извлечет этот тест из цикла, создавая эквивалентную сборку для обоих.