引用同一对象的向量
Vector with references to same object
我正在学习自己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);
}
相关文章:
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 迭代时从向量和内存中删除对象
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- 如何创建从同一类继承的不同对象的向量
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 从多个源构造一个对象,包括一个对象向量
- 在C 中,是否有可能在不兼容类型的std ::向量对象之间传输不同类型的缓冲区
- 将向量对象存储在共享指针投掷错误中
- E0312,C2664尝试将向量对象作为函数参数传递时错误
- 相对于向量对象的两个成员,找到两个向量的相交的有效方法
- 将数据从文件读取到向量对象
- C 向量对象访问
- 向量对象声明后的括号是什么意思
- 2向量对象指向相同的分配内存
- 如何返回向量对象
- 传递单个或向量对象时没有重载函数的实例
- 指向数组和向量对象的指针
- 向量对象库,可以存储其他对象类型的对象
- 如何从另一个向量/对象集构造新的向量/指针集