我目前正在尝试使用自定义分配器。我有一个小应用程序,使用内存池实现了自定义分配器。你可以在这里找到它。
它可以与std::vector
一起使用,但是当我尝试将其与std::set
一起使用时,会出现运行时错误:
typedef std::set<Data, std::less<Data>, my_allocator<Data> > PoolSet;
Pool<Data> pool(1024);
PoolSet set;
set.insert(Data()); // error: no pool found for type: std::_Rb_tree_node<Data>
问题在于std::set使用了我的内存分配器来分配数据和数据节点。由于没有为数据节点注册池,代码会失败。
详细信息可以在这里找到。
有人知道我如何解决这个问题吗?
my_allocator::rebind
以返回std::allocator
. - Ben Voigt