如何设置std :: vector的初始大小?
我有vector<CustomClass*>
,我把很多东西放在向量中,我需要快速访问,所以我不使用列表。 如何设置vector的初始大小(例如,为20000个位置,所以当我插入新的时候避免复制)?
std::vector<CustomClass *> whatever(20000);
要么:
std::vector<CustomClass *> whatever; whatever.reserve(20000);
前者设置数组的实际大小 – 即使其成为20000个指针的向量。 后者将向量留空,但为20000个指针保留空间,所以你可以插入(多达)许多,而不必重新分配。
你也许应该意识到,这个做任何真正的好事的机会是微乎其微的。
您需要使用reserve函数来设置初始分配的大小,或者在初始构造函数中执行。
vector<CustomClass *> content(20000);
要么
vector<CustomClass *> content; ... content.reserve(20000);
当你reserve()
元素时, vector
将分配足够的空间用于(至less?)许多元素。 vector
不存在元素,但是内存已经准备好被使用。 这可能会加快push_back()
因为内存已经被分配了。