矢量与同一对象的引用

时间:2014-01-11 13:15:06

标签: c++ vector reference

我正在学习自己的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的副本并将该引用放在向量中。

这是对的吗?

1 个答案:

答案 0 :(得分:1)

不,那不是发生了什么。 push_back会将其参数复制到向量中,因此最终会得到一个包含10个schuif副本的向量,而不是10个对它的引用。

您无法在C ++中创建引用向量,但您可以创建指针向量:

vector<Shuif *> v;
for (int i = 0; i < ArSize; i++) {
    v.push_back(&schuif);
}