В С++ 11 я могу перебирать несколько контейнеров:
for(auto i : vec){
std::cout << i << std::endl;
}
Но я знаю, что это бесполезно - бесполезно, так как мне нужно только распечатать значения vec
- делает копию ( EDIT: каждый элемент) vec
, поэтому вместо этого я может сделать:
for(auto &i : vec){
std::cout << i << std::endl;
}
Но я хочу удостовериться, что значения vec
никогда не изменяются и не соблюдают const-correctness, поэтому я могу сделать:
for(const auto &i : vec){
std::cout << i << std::endl;
}
Итак, мой вопрос: если мне нужно только посмотреть на значения какого-либо контейнера, не всегда ли был бы самый последний цикл (const auto &i
) из-за повышенной эффективности отсутствия дополнительной копии ( EDIT: каждый элемент) vec
?
У меня есть программа, которую я разрабатываю, в которой я планирую сделать это изменение повсюду, поскольку эффективность в ней важна (причина, по которой я использую С++ в первом месте).