繁体   English   中英

通过引用传递向量并在基于范围的 for 循环中更改其值?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM