使用自定义分配器修改增长策略

时间:2015-08-24 15:37:44

标签: c++ c++11 vector allocation allocator

我不是自定义分配器的用户,但我想知道是否可以使用自定义分配器来重新定义增长策略。例如,在大多数实现中,std::vector几何增长。是否有可能为算术增长改变此策略,例如每次需要重新分配时添加10个元素。如果答案是肯定的,那该怎么做?

1 个答案:

答案 0 :(得分:6)

没有。重新分配策略由vector定义,而不是由它使用的分配器定义。分配器只用于提供内存 - 由vector本身决定它要提供多少内存。

标准规定push_back按摊销时间不变。来自[vector.modifiers]

  

复杂性:插入元素的数量加上到结尾的距离是复杂的   矢量。

由于push_back必须是O(1)vector的增长策略不能算术 - 否则我们会有线性时间插入。

要做你想做的事,你必须提供自己的vector - 类容器,并实现你自己的push_back()成员函数。