0

我想使用类型 X 对象的向量创建一个对象 bool。当我创建向量时:

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()只保留向量中下一个空闲索引的索引?

4

1 回答 1

0

不会调用 X 的构造函数,因为 reserve 不会创建任何对象。不要将保留与调整大小混淆,它们会做不同的事情。我认为从您的其余描述中您确实想要保留,但请记住它使您的向量大小为 0。

当您想将对象添加到池中时,它类似于

v.push_back(X());

假设您要添加默认构造对象。

如果您想完全控制您的池,在您的池中使用构造和非构造插槽的任何旧组合。那么你将不得不做其他事情。你不会得到那个vector<T>

于 2013-10-05T12:24:59.077 回答