我试图理解为什么我需要在范围中使用引用,以便将以下表达式应用于 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/