在迭代中使用引用

时间:2018-02-08 17:18:47

标签: c++ c++11

vector<int> nums;
.....

//Case- A
for(int& i : nums){ 
....
}

//Case- B
for(int i : nums){ 
....
}

Case-A和Case-B的性能是否会有任何差异

1 个答案:

答案 0 :(得分:1)

这当然取决于循环体的作用。

没有身体进入循环,两者都将完全丢弃整个循环。

在任何一种情况下,可以生成的代码都没有什么不同。 &案例A最有可能丢弃不必要的操作(如复制值)。但显然,在修改i时,语义是不同的。