[英]Passing a vector by reference and changing its values in a range-based for loop?
我正在尝试通过执行类似于以下函数的操作来更改向量的值:
vector<int> Question2_Part3(vector<int> &v){
for(auto elem : v){
elem *= 2;
cout << elem << " ";
}
cout << "\n" << endl;
return v;
}
这可能吗? 我知道在我的 for 循环中,正在改变的是elem
的值。 我可以在更改v
的值的同时获得相同的输出并仍然使用基于范围的 for 循环吗?
是的,这是可能的,但使用参考
for (auto &elem : v) {
elem *= 2;
cout << elem << " ";
}
这也更有效,因为它避免将每个向量元素复制到变量。 实际上如果你不想改变你应该做的元素
for (const auto &elem : v) {
cout << elem << " ";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.