c++ - 双端队列 - 为什么 "reserve"不存在?

标签 c++ stl

标准的 STL vector 容器有一个“reserve”函数来保留未初始化的内存,以后可以使用它来防止重新分配。

另一个deque容器怎么没有?

最佳答案

增加 std::vector 的大小可能代价高昂。当 vector 超出其预留空间时,必须将 vector 的全部内容复制(或移动)到更大的预留空间。

正是因为 std::vector 调整大小可能代价高昂,所以 vector::reserve() 存在。 reserve() 可以准备一个 std::vector 以预期在不超过其容量的情况下达到一定的大小。

相反,deque 总是可以添加更多内存 无需重新定位现有元素。如果 std::deque 可以 reserve() 内存,则几乎没有明显的好处。

关于c++ - 双端队列 - 为什么 "reserve"不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15524475/

相关文章:

c++ - 考虑STL容器操作的复杂性

c++ - 加入std::variant <a,b,c>和std::variant <x,y,z>的类型

c++ - 如何在 C++ 中创建将函数与参数相关联的映射?

c++ - Qt离线安装器和兼容的c++编译器安装

c++ - 如何突出显示 QToolButton

c++ - 为什么不能将 auto 用作模板类型参数(例如 std::array<auto, 5>)?

c++ - 加载 View Controller 时播放声音

c++ - 如何使用 C++ 中的指定位置获取 Vector 中的元素?

c++ - Radix/Patricia Trie 的 STYLish 下界函数

c++ - std::map 和函数指针作为值