符合C ++ STL的分配器

时间:2010-04-03 20:17:18

标签: c++ stl allocator

在处理小对象时,可以使用哪些分配器与STL一起使用。我已经尝试过使用Boost的池分配器,但没有提高性能(实际上,在某些情况下会有相当大的降级)。

3 个答案:

答案 0 :(得分:3)

您没有说明您使用的编译器,但它可能附带了一堆预先构建的分配器。这是在Mac上gcc 4.2.1

~$ find /usr/include/c++/4.2.1/ -name "*allocator*"
/usr/include/c++/4.2.1/bits/allocator.h
/usr/include/c++/4.2.1/ext/array_allocator.h
/usr/include/c++/4.2.1/ext/bitmap_allocator.h
/usr/include/c++/4.2.1/ext/debug_allocator.h
/usr/include/c++/4.2.1/ext/malloc_allocator.h
/usr/include/c++/4.2.1/ext/mt_allocator.h
/usr/include/c++/4.2.1/ext/new_allocator.h
/usr/include/c++/4.2.1/ext/pool_allocator.h
/usr/include/c++/4.2.1/ext/throw_allocator.h

这里还有一个指向BitMagic项目页面的链接,该页面讨论了如何构建自己的项目。另请查看Loki library(以及book)中的小对象分配器。

答案 1 :(得分:1)

Microsoft Visual C ++标准库实现为基于节点的容器提供several proprietary allocators(至少在即将发布的Visual Studio 2010中)。

答案 2 :(得分:1)

您需要一个适合您特定需求的分配器。 STL通用分配器最适合各种情况,如果您需要新的分配器,则需要分析并了解您的特定要求。您必须更具体地说明要将这些对象放入哪个容器中。