如何设置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()因为内存已经被分配了。