c++ - 如何设置 std::vector 的初始大小?

标签 c++ stl

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

最佳答案

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

或:

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

前者设置数组的实际大小——即,使其成为一个包含 20000 个指针的 vector 。后者将 vector 留空,但为 20000 个指针保留空间,因此您可以插入(最多)那么多指针,而无需重新分配。

至少根据我的经验,其中任何一个都会在性能上产生巨大差异是相当不寻常的——但在某些情况下,两者都会影响正确性。特别是,只要不发生重新分配, vector 中的迭代器就保证保持有效,并且一旦您设置了大小/保留空间,您就可以保证只要您不进行任何重新分配' t 增加超出此大小的大小。

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

相关文章:

c++ - 为什么我不能手动提供模板参数?

c++ - 为什么需要配对才能插入 map ?

c++ - 不区分大小写的 std::string.find()

c++ - Rand_Max*(max-min)+min << 那是什么?

c++ - 使用在 C++ 中输入索引的 lambda 初始化 vector

c++ - 调试 char[4][4] 的 DEQUE

c++ - 在析构函数上自动安全地清除 C++ std::string 和 std::vector 的内容

c++ - 正则表达式 - 匹配后面没有特定模式的字符

c++ - QT5 : Multithread Tcp server doesn't send data to user

c++ - 当试图优化/内联我看起来平凡但不平凡的 dtor 时,编译器搬起石头砸自己的脚,我做错了什么?