首页 > 解决方案 > 在范围 for 中使用对向量元素的引用

问题描述

我试图理解为什么我需要在范围内使用引用,以获取以下表达式以应用于向量中的元素。

该代码简单地定义了一个向量并初始化了一些元素,然后使用 ranged 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 来计算每个元素时不会。

标签: c++vectorreference

解决方案


简单的说 :

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

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


推荐阅读