c++ - std::vector 容量智能实现

标签 c++ vector stdvector

我知道 std::vector 容量行为是特定于实现的,是否有任何智能实现可以做到这一点:

vector<int> v;
for(int i = 0; i < 10000 ; ++i){
    v.push_back(i);
}

在初始化时,它可以预测“vector”的容量,在本例中它将初始化容量为10000

我问这个是因为我一直认为 gcc 会做这种预测,但我找不到任何关于这个的东西......我想我在某个地方看到过这个,那么有没有实现这个的?

最佳答案

什么都预测不到。然而:

  • 可以使用reserve 来预先分配所需的最大元素数量。 push_back 将永远不需要重新分配。

  • push_back 使用分配不止一个 mor 元素的 vector 增长策略。 IIRC 增长因子为 2,这意味着一系列 push_back 中的重新分配数量趋于对数。因此,对 push_back 的 N 次调用的成本收敛于 log2(N)

关于c++ - std::vector 容量智能实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32197323/

相关文章:

android - 更改Kotlin的色彩

c++ - 在 vector 中的类中调用函数的正确方法

matlab - Matlab 中两点之间的距离

c++ - 将指向 vector 中元素的指针设置为空,然后检查指针是否为空(C++)

c++ - else if作为逻辑语句怎么写?

c++ - 按值返回与右值引用

c++ - std::vector.at()。它返回引用或拷贝吗?

wildcard - VHDL STD_LOGIC_VECTOR 通配符值

c++ - 如何使用模板模板参数显式实例化函数

c++ - 无符号整数数组如何包含负整数?