[英]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.