gpt4 book ai didi

c++ - 用于 std::vector 内存管理的不同乘数

转载 作者:太空狗 更新时间:2023-10-29 21:24:28 24 4
gpt4 key购买 nike

我一直在玩动态数组结构,我注意到 g++ 标准库的 vector 实现增加了 std::vector 的容量,方法是在当前容量被填充后调用的每个 push_back() 上加倍它向上。我认为有人提到 Microsoft 编译器使用 1.5 作为乘数是在 stackoverflow 的某个地方。我很好奇,这些值是硬编码的还是我可以在某处设置自定义乘数?

最佳答案

该标准不要求为您提供自定义乘数的方法,但您当然可以编写自己的集合或覆盖一个集合,并随心所欲地使用它。这是 Microsoft 的实现,来自 VS 2012:

void _Reserve(size_type _Count)
{ // ensure room for _Count new elements, grow exponentially
size_type _Size = size();
if (max_size() - _Count < _Size)
_Xlen();
else if ((_Size += _Count) <= capacity())
;
else
reserve(_Grow_to(_Size));
}

您可以看到它们总是按 size() 增长——从而使容量加倍,并且您(作为程序员)不打算覆盖这个值。

关于c++ - 用于 std::vector 内存管理的不同乘数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16025840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com