引用同一对象的向量

Vector with references to same object

本文关键字:向量 对象 引用      更新时间:2023-10-16

我正在学习自己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 个不同对象的向量 schuif。

这让我想知道矢量容器的push_back函数到底在做什么?接缝是它不是将引用添加到向量,而是复制 schuif 并将该引用放在向量中。

这是对的吗?

不,事实并非如此。 push_back会将其参数复制到向量中,因此您最终得到的向量包含十个schuif副本,而不是十个对它的引用。

不能在C++中创建引用向量,但可以创建指针向量:

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