Вариант a:
const auto end = whatever.end();
for (auto it = whatever.begin(); it != end; ++it)
{
// ...
}
Вариант b:
const auto end = whatever.cend(); // note the call to cend insteand of end here
for (auto it = whatever.begin(); it != end; ++it)
{
// ...
}
Есть ли основания полагать, что вариант b будет менее эффективным, чем вариант a, поскольку условие цикла сравнивает два разных итератора? Означает ли это неявное преобразование на it?
(end используется несколько раз внутри цикла for, следовательно, мое желание вытащить его.)