c++ - 在范围 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 来计算每个元素时不会。
解决方案
简单的说 :
for (auto i : v1)
将值复制到新变量中。
for (auto &i : v1)
引用向量中的实际值。