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

Passing a vector by reference and changing its values in a range-based for loop?

本文关键字:循环 for 范围内 引用 向量      更新时间:2023-10-16

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

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 << " ";
}

更多详细信息