vector<int> nums;
.....
//Case- A
for(int& i : nums){
....
}
//Case- B
for(int i : nums){
....
}
Case-A和Case-B的性能是否会有任何差异
答案 0 :(得分:1)
这当然取决于循环体的作用。
没有身体进入循环,两者都将完全丢弃整个循环。
在任何一种情况下,可以生成的代码都没有什么不同。 &
案例A最有可能丢弃不必要的操作(如复制值)。但显然,在修改i
时,语义是不同的。