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

KOB*_*KOB 3 c++ for-loop reference

我试图通过执行类似于以下函数的操作来更改向量的值:

vector<int> Question2_Part3(vector<int> &v){

    for(auto elem : v){
        elem *= 2;
        cout << elem << " ";
    }
    cout << "\n" << endl;

    return v;
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?我知道在我的for循环中,它的价值elem正在发生变化.我是否可以在更改值时v使用相同的输出并仍然使用基于范围的for循环?

Man*_*dis 5

是的,但可以使用参考

for (auto &elem : v) {
    elem *= 2;
    cout << elem << " ";
}
Run Code Online (Sandbox Code Playgroud)

这也更有效,因为它避免了将每个向量元素复制到变量.实际上,如果你不想改变你应该做的元素

for (const auto &elem : v) {
    cout << elem << " ";
}
Run Code Online (Sandbox Code Playgroud)

更多细节