C ++ 11 Эффективность цикла в зависимости от диапазона «const auto & i» против «auto i»

В C ++ 11 я могу перебрать какой-то контейнер следующим образом:

for(auto i : vec){
   std::cout << i << std::endl;
}

Но я знаю, что это без необходимости -ненужно, так как мне нужно толькоРаспечатать значенияvec - делает копию (РЕДАКТИРОВАТЬ: каждый элемент)vecтак что вместо этого я мог бы сделать:

for(auto &i : vec){
   std::cout << i << std::endl;
}

Но я хочу убедиться, что значенияvec никогда не изменяются и соблюдают const-правильность, поэтому я могу сделать:

for(const auto &i : vec){
   std::cout << i << std::endl;
}

Итак, мой вопрос: если мне нужно толькосмотрю при значениях некоторого контейнера, не самый последний цикл (const auto &i) всегда предпочтительнее из-за повышенной эффективности отсутствия дополнительной копии (РЕДАКТИРОВАТЬ: каждый элемент)vec?

У меня есть программа, которую я разрабатываю, и в которой я собираюсь внести это изменение, поскольку эффективность в этом критически важна (причина, по которой я использую C ++ на первом месте).

Ответы на вопрос(2)

Ваш ответ на вопрос