2 lcjwxd lcjwxd 于 2014.09.11 11:05 提问

c++ 引用 改变不了原始vector值,为什么

#include
#include
using namespace std;

vector aVec;
void getvectorint(vector &temp);
int main()
{
aVec.push_back(1);
aVec.push_back(5);

vector<int> temp;
getvectorint(temp);
temp.push_back(6);
int aVecsize = aVec.size();
int tempsize = temp.size();
cout<<"aVecsize="<<aVecsize<<endl;
cout<<"tempsize="<<tempsize<<endl;
return 0;

}
void getvectorint(vector &temp)
{
temp = aVec;
}

运行结果:
aVecsize = 2
tempsize = 3
为什么不都是3呢,我用的是引用啊,为什么不能对原始vector进行改变,请指教!

3个回答

Jiazhou_Lvguan
Jiazhou_Lvguan   2014.09.11 15:44

temp.push_back(6),又往temp里面插入了一个元素,所以要多一个。

Jiazhou_Lvguan
Jiazhou_Lvguan 你仔细看你的两个容器,一个是全局的,一个是局部的,是两个不同的容器,一个改变,不会对另外一个造成改变。
3 年多之前 回复
mymtom
mymtom   Rxr 2014.11.10 16:44

temp = aVec;
复制了一个vector呀

oyljerry
oyljerry   Ds   Rxr 2015.01.02 00:02

aVec是一个,所以是2个元素
temp是复制了aVec以后,又添加了而一个

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!