在C++ 11中,我可以迭代一些容器,如下所示:
for(auto i : vec){
std::cout << i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
但我知道这是不必要的 - 不必要的,因为我只需要打印 -的值vec- 制作(编辑:每个元素)的副本vec,所以我可以这样做:
for(auto &i : vec){
std::cout << i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
但是我想确保它们的值vec永远不会被修改并遵守const-correctness,所以我可以这样做:
for(const auto &i : vec){
std::cout << i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:如果我只需要查看某个容器的值,那么最后的循环(const auto &i)是否总是首选,因为没有额外副本(编辑:每个元素)的效率提高vec?
我正在开发一个我正在开发的程序,我正在考虑在整个过程中进行这种改变,因为效率是至关重要的(我在第一时间使用C++的原因).