【发布时间】:2013-10-05 12:22:25
【问题描述】:
我想使用类型 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() 在哪里只保留指向向量中下一个空闲索引的索引?
【问题讨论】:
-
注意写
vector<X>* v = new vector<X>;或vector<X> v(); -
这段代码在几年前救了我一次:Object Pooling for Generic C++ classes 它对现有代码的干扰最小,因为您使用普通的
new和delete运算符从池中获取对象并将它们返回到。 -
@MassoodKhaari 感谢您指出我丢失的指针参考。
-
现在你应该使用“->”而不是“.” :)
标签: c++ performance memory-management vector object-pooling