我正在学习自己的C ++。为了理解Vector的工作原理,我在下面编写了一些奇怪的代码:
Schuif是一个用户定义的类,ArSize的值是10。
======================
Schuif schuif;
Schuif &TempSchuif = schuif;
for(size_t i=0; i<ArSize; ++i)
{
cout << "vector size = " << SchuifVector.size() << endl;
cout << "vector capacity = " << SchuifVector.capacity() << endl;
SchuifVector.push_back(TempSchuif);
}
使用这段代码,我希望最终得到一个包含10个元素的向量,其中所有元素都包含对同一个schuif对象的引用。
但是,当我编译这段代码时,我有一个带有10个不同对象的向量。
这让我想知道矢量容器的push_back功能究竟是做什么的?它接缝是它不是添加对向量的引用,而是制作schuif的副本并将该引用放在向量中。
这是对的吗?
答案 0 :(得分:1)
不,那不是发生了什么。 push_back
会将其参数复制到向量中,因此最终会得到一个包含10个schuif
副本的向量,而不是10个对它的引用。
您无法在C ++中创建引用向量,但您可以创建指针向量:
vector<Shuif *> v;
for (int i = 0; i < ArSize; i++) {
v.push_back(&schuif);
}