注意: 我知道类似的问题在SO上已经被问过了,但我觉得它们不够有用或者不是很清晰。
第二点注意: 对于这个项目/任务的范围,我试图避免使用第三方库,比如Boost。
我想要看看是否有一种方法可以让一个单一的向量容纳多种类型,在每个索引中。例如,假设我有以下代码示例:
vector<something magical to hold various types> vec;
int x = 3;
string hi = "Hello World";
MyStruct s = {3, "Hi", 4.01};
vec.push_back(x);
vec.push_back(hi);
vec.push_back(s);
我听说 vector<void*>
可以工作,但是在内存分配方面会变得棘手,并且如果将一个值插入到特定索引中,而它的大小超出了预期,则总有可能意外覆盖附近内存中的某些部分。
在我的实际应用程序中,我知道可能会插入到向量中的类型,但这些类型并不都来自于同一个基类,并且不能保证所有这些类型都会被推送到向量中或以什么顺序推送。
有没有一种方法可以安全地完成我在代码示例中演示的目标?
感谢您的时间。
shared_ptr
使内存不那么混乱。 - Brendan Long