C++11 将内存池与STL容器的自定义分配器一起使用

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; 如何将池传递给我的分配器?标准库分配器是无状态的(有关上下

我希望能够将需要分配的内存池传递给STL容器(向量、无序映射等)。我发现了,但它并没有解决我面临的具体问题。 我已经有了一个可以在容器声明中指定的工作自定义分配器,但无法找到从应用程序传递地址供分配器内部使用(通过placement new运算符)。基本上,我想去

发件人:

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;