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

Vin*_*ent 1 c++ allocation vector allocator c++11

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

Bar*_*rry 6

否.重新分配策略由其vector使用的分配器定义,而不是由其定义.分配器只用于提供内存 - 它vector可以告诉它需要提供多少内存.

标准授权push_back是按常数摊销的.来自[vector.modifiers]

复杂性:插入元素的数量加上到向量末尾的距离是复杂的.

既然push_back必须O(1),增长策略vector一定不能算术 - 否则我们就会有线性时间插入.

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