我想爲std::map
指定allocator
。所以編寫自定義的,從Josuttis獲取here的基本代碼。我想用boost::object_pool
來獲得高性能。但boost::object_pool
不提供API分配n
其通過接口功能要使用boost :: object_pool來實現map的自定義分配器,如何使用boost :: object_pool分配n個連續元素?
pointer allocate (size_type num, const void* = 0)
allocator
的
需要連續的元件。
如何在boost::objet_pool
中分配n個連續元素?任何其他開源對象池都提供相同的功能。
我看到boost::simple_segregated_storage
具有界面
void * malloc_n(size_type n, size_type partition_sz);
但
void free_n(void * chunks, size_type n,size_type partition_sz);
需要分配單元的大小,我不認爲可以很容易地使用對象池。
呵呵。什麼方案? 「map」與你的問題有什麼關係?而且,是的,當然map **不會一次分配多個節點(它是基於節點的,迭代器/引用失效規則意味着它不應該),除非你願意冒着不好的分段情況的風險,又名資源泄漏) – sehe
@sehe:問題是,我想用boost :: object_pool爲std :: map構建allocater。但boost對象池需要支持連續的'n' no元素塊來支持標準的分配器接口。但是它可能會被黑客攻擊,因爲std :: map只能分配1個元素,因爲這是std :: map到分配器的唯一需求 –