我想使用X对象类型的向量创建一个对象布尔。当我创建向量时:
vector<X>* v = new vector<X>;
v.reserve(10000);我希望尽可能少的工作完成。是否只会调用默认构造函数(我的默认构造函数对于X是空的)?
在稍后的程序中,我如何使用对象池“创建”我的对象?会不会是这样的:
int y = get_next_object_in_pool();
X x = v[y];在哪里,get_next_object_in_pool()只保存一个索引,指向向量中的下一个空闲索引?
发布于 2013-10-05 20:24:59
不会调用X的构造函数,因为reserve不会创建任何对象。不要混淆保留空间和调整大小,它们做的是不同的事情。我认为从你描述的其余部分来看,你确实想要保留,但请记住,它会让你的向量的大小为0。
当您想要将一个对象添加到池中时,它类似于
v.push_back(X());假设您想要添加一个默认的构造对象。
如果您想要完全控制您的池,在您的池中使用任何旧的已构建和未构建插槽的混合。那你就得做点别的了。使用vector<T>是不会得到这种效果的。
https://stackoverflow.com/questions/19197747
复制相似问题