繁体   English   中英

std :: vector容量智能实现

[英]std::vector capacity smart implementation

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

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

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

我之所以要求这样做,是因为我一直以为gcc会做出这种预测,但是我对此一无所知。我想我在某处已经看到了这一点,那么有没有实现这一点的实现?

没有预料到的。 然而:

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

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

它存在std :: vector的不同构造函数。 这些可能性之一就是说向量的默认值和所需数量的值。

std :: vector的文档中:

// constructors used in the same order as described above:
std::vector<int> first;                                // empty vector of ints
std::vector<int> second (4,100);                       // four ints with value 100
std::vector<int> third (second.begin(),second.end());  // iterating through second
std::vector<int> fourth (third);                       // a copy of third

如果您事先知道向量的最大大小,这将很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM