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

Modifying growing strategy using custom allocator

本文关键字:策略 修改 分配器 自定义      更新时间:2023-10-16

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

No。重新分配策略是由vector定义的,而不是由它使用的分配器定义的。分配器的作用只是提供内存——要由vector自己来决定要提供多少内存。

标准要求push_back为常数时间平摊。从[vector.modifiers]

复杂度:复杂度与插入元素的数量加上到末尾的距离成线性关系

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

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