[英]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.