【发布时间】:2010-09-24 01:46:37
【问题描述】:
我有一个包含 1000 个“节点”的向量
if(count + 1 > m_listItems.capacity())
m_listItems.reserve(count + 100);
问题是当我要重新填充它时,我也将它清除了。
m_listItems.clear();
容量不变。 我使用了 resize(1);但这似乎并没有改变容量。 那么如何改变储备呢?
【问题讨论】:
-
您的系统内存不足吗?像这样保留意味着向其中添加 n 个项目使用 O(n^2) 时间和最多 n+100 个对象的空间以及舍入误差。让向量扩展自身将减少代码、O(n) 时间,并且在大多数实现中最多使用 2*n 空间加上舍入。
-
我的系统内存非常不足。(嵌入式).. 代码实际上只是我想实现的一个例子。在大多数情况下,我从“表”中获得 1000 个项目块,因此以相同的频率调整大小是有意义的。 CLEANUP 是我最关心的问题。
标签: c++ memory stl vector resize