创建对象池
Creating an object pool
本文关键字:创建对象 更新时间:2023-10-16
我想使用 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()
在哪里保留指向向量中下一个自由索引的索引?
不会调用 X 的构造函数,因为 reserve 不会创建任何对象。不要将保留与调整大小混淆,它们做不同的事情。我认为从您描述的其余部分来看,您确实想要保留,但请记住,它将您的向量大小设置为 0。
当您要向池中添加对象时,它类似于
v.push_back(X());
假设您要添加一个默认构造对象。
如果您想完全控制池,以及池中任何已构造和非构造插槽的旧组合。 然后你将不得不做其他事情。你不会得到vector<T>
.
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何创建对象函数指针C++映射?
- C++创建对象数组
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何获取在 main() 函数中构造的类的创建对象?
- 基于文件中的条目创建对象
- 错误:创建对象后无法分配区域
- C++ 通过输入创建对象
- 堆还是堆栈用于创建对象?
- 使用 C++ 创建对象数组
- 使用unique_ptr创建对象
- C++递归地在类构造函数中创建对象
- 通过向构造函数其他对象引用页面来创建对象
- ReactiveX (rx) - 在对象上应用可观察对象,而不是在可观察对象中创建对象
- 如何在OSX上正确创建C++对象文件(.o)
- 编译器是否会创建vtable,而不考虑在c++中创建对象
- 创建对象并防止被破坏
- 在C++中,友元类可以从友元类创建对象吗
- 只在堆中创建C++对象
- 创建用户定义的复制构造函数时无法创建对象