如何在一个向量中存储具有不同数据类型的对象
How to store objects with different datatypes in one vector
我对在一个向量中存储具有不同数据类型的对象的方式完全感到困惑。例如,我有带有一些指定数据的类 1 和带有另一个数据的类 2。我需要按照它们的创建顺序将它们放入矢量中。有可能做到吗?
这里有一些替代方案。
如果要存储的不同数据类型是 POD 类型,则可以创建联合来存储它们。
union u {
int intvalue;
double double value;
}
vector<u> vec;
您还可以通过联合存储指向不同类型实例的指针。
使用这样的联合的一个缺点是,您需要某种方法来知道每个实例中实际存储的类型。
或者,如果要存储对象,可以将对象排列为全部从公共基类继承,然后在堆上分配类的实例,并存储指向向量中实例的指针。根据对象的使用方式,您必须强制转换指针和/或使用虚拟方法来调用对象上的方法。
class base {
...
}
class d1 : base {
...
}
vector<base*> vec;
vec.push_back((base*)new d1());
或者你可以使用boost.variant。这可以说是最好的方法,因为与我提到的其他方法相比,它是类型安全的。
相关文章:
- 如何使用 stl 容器有效地存储对象?(即根据其字段的值进行搜索)
- 线程上下文上的静态存储对象优化
- OOP - 存储对象和服务接口
- 为什么存储对象地址在缓冲区中会导致内存泄漏并删除它们
- 是否保证在销毁所有线程本地存储对象后销毁全局对象
- 使用列表存储对象
- 在c++中存储一个对象或不存储对象的首选方式是什么
- 更好的是:存储对象与存储指针
- 应用程序使用QMAP存储对象时停止响应
- 使用堆栈存储对象
- 如何在 std::map 中存储"对象类型"?
- 我应该如何存储对象
- 在 c++ 中存储对象的最佳策略是什么,确保名称唯一并能够在以后有效地检索它们
- 用于存储对象列表的最佳标准类
- 在C++中存储对象地址的数据结构
- 函子如何维护/存储对象的状态
- 我如何定义一个向量,并用C++在其中存储对象
- 存储对象以备将来使用(在重新启动程序时)
- C++/JNI-存储对象(jobject)在向量和数组中发生意外更改,C++或JNI问题
- 在多个容器中存储对象的最佳实践