使用自定义分配器修改增长策略
Modifying growing strategy using custom allocator
我不是自定义分配器的用户,但是我想知道是否可以使用自定义分配器来重新定义增长策略。例如,在大多数实现中,std::vector
呈几何增长。是否有可能为算术增长改变此策略,例如每次需要重新分配时添加10个元素。如果答案是肯定的,那该怎么做呢?
No。重新分配策略是由vector
定义的,而不是由它使用的分配器定义的。分配器的作用只是提供内存——要由vector
自己来决定要提供多少内存。
标准要求push_back
为常数时间平摊。从[vector.modifiers]
复杂度:复杂度与插入元素的数量加上到末尾的距离成线性关系
因为push_back
必须是O(1)
,所以vector
的增长策略不能是算术的,否则我们会有线性时间插入。
要做你想做的,你必须提供你自己的vector
类容器和实现你自己的push_back()
成员函数。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 独立读取-修改-写入顺序
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- C++17中的并行执行策略
- 修改函数中的指针(将另一个指针作为参数传递)
- 为什么我可以通过引用修改常量返回
- 对于结构,表达式必须是可修改的ivalue
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 为什么不能修改对象中的值?另外,我如何改进此链表?
- 修改创建帐户程序
- 我应该如何修改此代码以使用给定字符串中的字母打印菱形图案
- 如何从子成员函数修改父公共成员变量
- 修改 VS Code 中的默认C++代码段
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 如何使用递归打印修改后的星号三角形图案
- C++ 运算符修改/元编程策略,用于不那么冗长的语法
- 后来,我如何修改STD ::启动策略的STD :: async
- 修改排列算法以防止重复打印输出的策略
- 修改mongodb ID策略
- 使用自定义分配器修改增长策略