C++中修改int变量x为何不改变vector内对应元素值的疑问
为什么修改x不会改变vector内的元素?
你代码里的int x = vec.at(0);这一行,vec.at(0)确实返回vector中第一个元素的引用,但你把它赋值给普通int类型的x时,x会创建一个独立的变量,拷贝原元素的值(也就是5)。这时候x和vector里的元素是两个完全分开的对象,修改x自然不会影响原vector里的元素。
如果想让x成为vector元素的别名,修改x就能同步改变原元素,需要把x声明为引用类型:
int& x = vec.at(0); // 这里的&表示引用
这样当你执行x = 7时,vector内的元素值就会变成7了。
简单说,C++里的引用是变量的别名,必须在声明时绑定到目标对象;普通变量只会存储值的副本,副本的修改和原对象无关。
内容的提问来源于stack exchange,提问作者lafarrjam99
相关产品推荐
相关产品推荐

