c++ - 在 vector 中使用 reserve() 的好处 - C++

标签 c++ performance vector

在处理 vector 时使用保留有什么好处。我应该什么时候使用它们?无法找到明确的答案,但我认为在使用前提前预订会更快。

你们说什么比我聪明?

最佳答案

如果您知道 vector 最终将包含多少个元素,这将非常有用 - 它可以帮助 vector 避免重复分配内存(并且必须将数据移动到新内存)。

一般来说,这可能是您无需担心的潜在优化,但它也无害(如果您高估,最坏的情况是您最终会浪费内存)。

当您希望确保现有迭代器不会因添加新元素而失效时,它可能不仅仅是一种优化。

例如,push_back() 调用可能会使 vector 的现有迭代器无效(如果发生重新分配)。但是,如果您保留了足够多的元素,则可以确保不会发生重新分配。这是一种不需要经常使用的技术。

关于c++ - 在 vector 中使用 reserve() 的好处 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6525650/

相关文章:

java - Android 中的 Animate Drawable 图标 - ClassCastException VectorDrawable 无法转换为 Animatable

android - 如何将新的 .cpp 文件添加到 Android 的 c++ 库中,然后构建该库?

python - 在 pybind11 中引用 C++ 分配的对象

MySQL/InnoDB 连接数限制

python - 为什么对于 Euler 50 的等效解决方案,Clojure 比 Python 慢 10 倍?

java - 将字段移至局部变量的好处

c++ - 如何通过按 Escape 键重置 QLineEdit 文本?

c++ - 如果 const char* 从函数返回,则 LPCWSTR 损坏

java - vector 中以给定字母/数字开头的元素

c++ - 关于c++中vector的观察