在std::vector中使用自定义分配器

35

是否可以为std::vector的内部分配使用自定义分配器?如果可以,要怎么做?


3
模板<class T,class Allocator = allocator <T>> class vector; (提示:这是C++中的vector容器类模板声明,使用了模板元编程技术,其中Allocator是可选参数,如果未指定则默认为allocator<T>。) - Luchian Grigore
4
第一个谷歌链接 - http://www.josuttis.com/libbook/memory/myalloc1.cpp.html 和 http://www.josuttis.com/libbook/memory/myalloc.hpp.html - Luchian Grigore
2
请查看Howard Hinnant最近的回答:https://dev59.com/gmbWa4cB1Zd3GeqPY6aX#11703840 - TemplateRex
"internal allocations" 是什么意思?你对向量分配器概念的哪个方面感到不清楚? - Kerrek SB
1
@James:不是的。当大小改变时,vector 调用 alloc.allocate()alloc.deallocate() - Kerrek SB
显示剩余2条评论
1个回答

20
你基本上需要实现你的分配器类型以符合分配器概念
链接页面列出了该类型的所有要求,但核心功能是在allocate成员函数中实现的。

27
可以。举个例子。 - serup
@serup 点击链接,里面有大量的示例。 - bitmask
9
这正是仅包含链接的回答为什么是“糟糕”的原因!页面已不再存在,指向失效链接中的示例甚至更糟。 - dtell
2
至少我更新了链接。新页面已被引用,因为cppreference是一个维基百科。但是我理解你的观点。 - bitmask
5
这是一个与IT有关的内容。以下是翻译文本:这里提供了一个运行示例,源自于参考资料 - schoetbi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接