我目前正在試驗自定義分配器。我有一個small application實現一個自定義分配器與內存池。將std :: set <T>連接到內存池
它與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>
的問題是,性病::集使用我分配的數據和數據節點兩者。由於沒有爲數據節點註冊池,因此代碼將失敗。
詳情請見code。
有沒有人知道我在做什麼來解決這個問題?
你想在地圖內部數據結構進行合併?如果沒有,我想你可以用返回一個'std :: allocator'的方式來定義'my_allocator :: rebind'。 –