引用同一对象的向量

Posted

技术标签:

【中文标题】引用同一对象的向量【英文标题】:Vector with references to same object 【发布时间】:2014-01-11 13:15:05 【问题描述】:

我正在学习 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 的向量。

这让我很奇怪vector容器的push_back函数到底是干什么的?它似乎不是添加对向量的引用,而是复制 schuif 并将该引用放入向量中。

这是正确的吗?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于引用同一对象的向量的主要内容,如果未能解决你的问题,请参考以下文章

在将另一个实例添加到同一向量后引用的成员变量的引用

当我尝试复制它并将副本推送到同一向量中时,向量中的对象有时会被擦除

包含引用的对象向量

当我在 C++ 中只有对向量的引用时如何更改向量中的对象

C ++跨类访问基对象向量中的派生对象的引用

c++ 引用向量的问题?