引用同一对象的向量
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);
【讨论】:
以上是关于引用同一对象的向量的主要内容,如果未能解决你的问题,请参考以下文章