首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建对象池

创建对象池
EN

Stack Overflow用户
提问于 2013-10-05 20:22:25
回答 1查看 806关注 0票数 0

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

代码语言:javascript
复制
vector<X>* v = new vector<X>;
v.reserve(10000);

我希望尽可能少的工作完成。是否只会调用默认构造函数(我的默认构造函数对于X是空的)?

在稍后的程序中,我如何使用对象池“创建”我的对象?会不会是这样的:

代码语言:javascript
复制
int y = get_next_object_in_pool();
X x = v[y];

在哪里,get_next_object_in_pool()只保存一个索引,指向向量中的下一个空闲索引?

EN

回答 1

Stack Overflow用户

发布于 2013-10-05 20:24:59

不会调用X的构造函数,因为reserve不会创建任何对象。不要混淆保留空间和调整大小,它们做的是不同的事情。我认为从你描述的其余部分来看,你确实想要保留,但请记住,它会让你的向量的大小为0。

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

代码语言:javascript
复制
v.push_back(X());

假设您想要添加一个默认的构造对象。

如果您想要完全控制您的池,在您的池中使用任何旧的已构建和未构建插槽的混合。那你就得做点别的了。使用vector<T>是不会得到这种效果的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19197747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档