c++ - 如何将 std::vector 的容量限制为元素的数量

标签 c++ c++11 memory memory-management vector

我的程序使用了 569MB 的内存,它只需要使用 500MB, 我有很多不同大小的 std::vector 有没有办法将容量设置为元素数量以避免内存开销。 (我不考虑性能,内存是关键)

最佳答案

How to limit the capacity of std::vector to the number of element

您能做的最好的事情就是在添加元素之前保留所需的空间。这也应该有最好的性能,因为没有由它引起的重新分配和复制。

如果那不切实际,那么您可以在添加元素后使用 std::vector::shrink_to_fit()。当然,如果分配的峰值可能永远不会超过设定的限制,那也无济于事。

从技术上讲,标准不能保证这两种方法都能使容量与大小相匹配。您依赖于标准库实现的行为。

关于c++ - 如何将 std::vector 的容量限制为元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38432259/

相关文章:

c++ - 如何通过 getter 函数序列化包含指针的类?

c++ - 如何使用 C++11 显式模板来减少二进制大小?

c++ - 重置 move 对象的常用惯用法是什么?

c++ - R6010 abort() 已被调用

c++ - 你可以使用关键字显式来防止方法参数的自动转换吗?

c++ - 如何编写以可变参数作为模板参数的成员函数

java - 增加堆大小

使用位域比较 C 中的结构

C分配和内存开销

c++ - SFML 拾色器问题