c++ - 通过引用传递 vector 并在基于范围的 for 循环中更改其值?

标签 c++ for-loop reference

我正在尝试通过执行类似于以下函数的操作来更改 vector 的值:

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

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

for (const auto &elem : v) {
    cout << elem << " ";
}

More details

关于c++ - 通过引用传递 vector 并在基于范围的 for 循环中更改其值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33508667/

相关文章:

reference - 如何通过 MongoDB/pymongo 中的 DBRef 进行查询?

C# 输出参数与返回值

arrays - D - 将子数组的引用存储在变量中

c# - c++ 中的 string* [] 转换为 c# 中的 string[]

c++ - 如何在打开另一个图像时关闭图像 - linux c++

c++ - 这段代码在做什么?涉及字符数组和指针(C++)

javascript - 对象在一个参数内传递多个参数

c++ - 以相反的顺序迭代可变模板参数

java - Java中for循环不中断才执行代码的方法有哪些?

javascript - 求 for 循环中变量的迭代总和