根据cppreference,在标准::矢量::储备(为size_t n)的,n是“分配存储容量所需的最小数量”。我的问题是:如何避免只知道最大值的重新分配?
作为一个例子,假设我有一个整数列表,但我不知道这个列表的大小(例如这个列表来自读取文件)。但我知道这个列表的最大大小是1000.假设列表的实际大小为800.
目前,我使用std :: reserve(1000),然后使用push_back() 。使用保留我阻止任何重新分配。但是如何在push_backs结尾释放额外的空间? (在这个例子的情况下,如何释放1000-800 = 200多余的空间?)
非常感谢。
这需要C++ 11支持。并不保证收缩任何东西。 – 2012-04-29 02:57:40
@NicolBolas是的,标准说它是一个非绑定请求,并且“注意:该请求不具有约束力,允许实现特定优化的纬度。”质量实施可以选择不调整容量的一个例子是,当前容量已经足够低,以至于容器正在利用像小字符串优化那样的优势。 – bames53 2012-04-29 03:35:25