首页 > 解决方案 > 带参考的矢量

问题描述

我正在学习 C++,但我很难理解为什么会这样。我知道引用只是某个对象的同义词。但我不明白为什么会这样

std::vector<int> v{1,2,3};
for (auto &i : v)      //using reference
    i *= i;

输出1,4,9和这个

std::vector<int> v{1,2,3};
    for (auto i : v)   //without using reference
        i *= i;

输出1,2,3

先感谢您

标签: c++reference

解决方案


这也是同样的原因:

int a=2;

int &b=a;

b=3;

为什么这最终设置a为 3,但是:

int a=2;

int b=a;

b=3;

a仍然是2,并且只有b3。

向量本身无关紧要,这与参考的基本概念有关。引用为被引用对象创建别名。“非引用”创建一个新对象。auto &i创建参考。auto i创建一个新对象并通过从另一个对象复制其值来初始化它,在本例中为向量中的每个值。


推荐阅读