在 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++ 的原因)。