相关疑难解决方法(0)

C++ 11基于范围的for循环效率"const auto&i"与"auto i"

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

c++ for-loop auto c++11

55
推荐指数
2
解决办法
2万
查看次数

标签 统计

auto ×1

c++ ×1

c++11 ×1

for-loop ×1