我有一个vector<CustomClass*>,我在 vector 中放了很多项目,我需要快速访问,所以我不使用列表。如何设置 vector 的初始大小(例如为20 000个位,所以在插入新的 vector 时避免复制)?

最佳答案

std::vector<CustomClass *> whatever(20000);

要么:
std::vector<CustomClass *> whatever;
whatever.reserve(20000);

前者设置数组的实际大小-即使其成为20000个指针的 vector 。后者将 vector 留空,但保留了20000个指针的空间,因此您可以插入(最多)多个指针,而不必重新分配。

至少以我的经验来看,这两种方法在性能上产生巨大差异是很不寻常的-但在某些情况下,它们都会影响正确性。特别是,只要不发生任何重新分配,就可以保证 vector 中的迭代器保持有效,并且一旦设置了大小/保留空间,就可以保证只要您不进行任何重新分配,不能增加尺寸。

关于c++ - 如何设置std::vector的初始大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11457571/

10-11 22:53
查看更多