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

Modifying growing strategy using custom allocator

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

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

标准规定 push_back 是摊销常数时间。来自 [vector.modifiers]

Complexity: The complexity is linear in the number of elements inserted plus the distance to the end of the vector.

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

要执行您想要的操作,您必须提供您自己的 vector 类容器并实现您自己的 push_back() 成员函数。