该标准是否规定了std::vector的增长向量是否必须是恒定的,或者它是否可以自适应?
在我的linux和mac机器上,我相信它总是恒定的(根据经验观察--但我没有检查过它是否保持在非常大的大小)。是后者的2倍,我想不起来是前者。
发布于 2021-03-15 23:50:42
该标准要求向量具有amortized constant growth。只要保持这一点,实现就可以做它想做的任何事情。
我见过的所有实现都使用了一个恒定的增长因子,但这并不意味着它必须是这样的,只要保持不变量。
发布于 2021-03-15 23:56:32
该标准规定std::vector的增长必须是O(1)+。
加倍是一种常见的策略。
一些学术研究表明,按黄金比例增长可能更好。如果它是可配置的,那就好了,但没有人说服C++标准委员会这样做的好处。
https://stackoverflow.com/questions/66641236
复制相似问题