C++11 将内存池与STL容器的自定义分配器一起使用
我希望能够将需要分配的内存池传递给STL容器(向量、无序映射等)。我发现了,但它并没有解决我面临的具体问题。 我已经有了一个可以在容器声明中指定的工作自定义分配器,但无法找到从应用程序传递地址供分配器内部使用(通过placement new运算符)。基本上,我想去 发件人:C++11 将内存池与STL容器的自定义分配器一起使用,c++11,memory-management,stl,dynamic-memory-allocation,C++11,Memory Management,Stl,Dynamic Memory Allocation,我希望能够将需要分配的内存池传递给STL容器(向量、无序映射等)。我发现了,但它并没有解决我面临的具体问题。 我已经有了一个可以在容器声明中指定的工作自定义分配器,但无法找到从应用程序传递地址供分配器内部使用(通过placement new运算符)。基本上,我想去 发件人: std::vector myVector; 致: void*pool=getMemoryPoolAddress(); std::vector myVector; 如何将池传递给我的分配器?标准库分配器是无状态的(有关上下
std::vector myVector;
致:
void*pool=getMemoryPoolAddress();
std::vector myVector;
如何将
池
传递给我的分配器?标准库分配器是无状态的(有关上下文,请参阅)。这意味着您的混凝土分配器类型只能在C++中只有一个状态(单态)-全局的,或者“代码>静态< /代码>。
因此,您链接的问题包含您问题的答案:
class MyPoolAlloc {
public:
static MyPool *pMyPool;
...
};
MyPool*MyPoolAlloc::pMyPool=NULL;
这是为分配器类型指定池的方式。标准库分配器是无状态的(请参阅上下文)。这意味着您的混凝土分配器类型只能在C++中只有一个状态(单态)-全局的,或者“代码>静态< /代码>。 因此,您链接的问题包含您问题的答案:
class MyPoolAlloc {
public:
static MyPool *pMyPool;
...
};
MyPool*MyPoolAlloc::pMyPool=NULL;
这是您为分配器类型指定池的方式
class MyPoolAlloc {
public:
static MyPool *pMyPool;
...
};
MyPool* MyPoolAlloc<T>::pMyPool = NULL;