c++ - 在范围中使用对 vector 元素的引用

标签 c++ vector reference

我试图理解为什么我需要在范围中使用引用,以便将以下表达式应用于 vector 中的元素。

代码简单地定义了一个 vector 并初始化了一些元素,然后使用一个范围的 for 对它们进行平方,并打印输出。

int main() {
        vector<int> v1{1,2,3,4,5};
        for (auto &i : v1)
                i *= i;
        for (auto i : v1)
                cout << i << " ";
        cout << endl;
}

上面的工作,但如果我使用第一个范围:

for (auto i : v1)

然后元素不会平方。这里有什么区别?我不明白在这种情况下需要使用引用,但稍后当我想使用另一个范围 for 来计算每个元素时就不会了。

最佳答案

简单地说:

for (auto i : v1) 将值复制到新变量中。

for (auto &i : v1) 引用 vector 中的实际值。

关于c++ - 在范围中使用对 vector 元素的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55818218/

相关文章:

c++ - 从 char* 高效地实例化 vector<char>

jquery - 有 AJAX 引用吗? ajaxSubmit() 的作用是什么?它内置于 jQuery 中吗?

c++ - 以最小的开销删除多余的参数包参数

c++ - 更高效的结构如 unordered_map<pair<int, int>, int>

c++ - C++中 vector 的指针算法

python - 重新链接 python 对象(即通过引用传递)

.net - DLL不复制到bin文件夹

c++ - map<T,T>::iterator 作为参数类型

c++ - 填充对象的 C++ 二维数组

C++11 实现移动构造函数并移动成员 vector