gpt4 book ai didi

c++ - std::vector 的容量是如何确定的

转载 作者:搜寻专家 更新时间:2023-10-31 00:42:16 24 4
gpt4 key购买 nike

我知道在 std::vector 中,每次用完空间时大小都会增加。然而,我没有注意到它的增长模式。有人可以向我解释一下模式以及选择它的原因。

#include <iostream>
using namespace std;

#include <iostream>
#include <vector>
int main()
{
vector<int> myVector;
for(int i =0 ; i < 100; ++i)
{
myVector.push_back(i);
cout << myVector.capacity();
cout << ", ";
}
}

结果:

1, 2, 3, 4, 6, 6, 9, 9, 9, 13, 13, 13, 13, 19, 19, 19, 19, 19, 19, 28, 28, 28, 2
8, 28, 28, 28, 28, 28, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 6
3, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 6
3, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 9
4, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 141, 141, 141, 141, 141, 141

最佳答案

这取决于实现,所以当您切换操作系统、编译器等时,不要指望相同的模式。

最常见的增长模式是 1.5 * previous_capacity2 * previous_capacity。在你的例子中,它似乎是前者。

参见 https://stackoverflow.com/a/1100426/784668对于为什么选择该因素的可能解释。关键是它显然允许重用以前用于存储数组的空闲内存块。

关于c++ - std::vector 的容量是如何确定的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12229290/

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