Mon*_*ica 6 c++ boost vector allocator boost-pool
我希望有一个std::vector对象,使用分配的对象boost::pool.这是正确的:
class MyClass
{
private:
double data;
public:
MyClass(double d) : data(d) { }
};
int main()
{
std::vector<MyClass, boost::fast_pool_allocator<MyClass> > vect;
vect.push_back(4.5);
vect.push_back(9.8); //Are these being stored in a pool now?
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这段代码有效,但我不完全确定原因.我对分配器的概念很陌生,但是如果我理解正确的话,这就是std::vector使用池而不是默认分配器,因此在向量中创建的任何元素都将从池中创建.
我不太确定的是:
游泳池在哪里?
我将如何直接访问池(例如释放内存)?
是否fast_pool_allocator包含池,或者我是否需要单独创建池并以某种方式告诉分配器使用它.
对于boost::fast_pool_allocator池来说,它是由分配器实现拥有的单例。所以你不需要单独创建任何东西。
get_allocator您可以通过的 函数访问分配器std::vector,也可以使用 中的静态函数boost::fast_pool_allocator。
| 归档时间: |
|
| 查看次数: |
1557 次 |
| 最近记录: |