【问题标题】: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 并将该引用放入向量中。

这是正确的吗?

【问题讨论】:

    标签: c++ vector reference


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      • 2021-01-21
      • 1970-01-01
      相关资源
      最近更新 更多