【发布时间】:2011-11-15 21:37:05
【问题描述】:
我正在为我的 vector 成员变量预分配一些内存。下面的代码是最小的部分
class A {
vector<string> t_Names;
public:
A () : t_Names(1000) {}
};
现在在某个时间点,如果 t_Names.size() 等于 1000。我打算将大小增加100。然后如果达到1100,再增加100,以此类推。
我的问题是,在 vector::resize() 和 vector::reserve() 之间选择什么。这种场景有没有更好的选择?
编辑:我对t_Names 有某种精确的估计。我估计它在700 到800 左右。但是在某些(很少)情况下,它可以增长超过1000。
【问题讨论】:
-
您意识到这样做意味着向量增长不再是摊销的常数时间,并且您失去了使用
std::vector的性能优势之一。 -
相关,请参阅 Dobbs 博士网站上的 C++ Made Easier: How Vectors Grow。