我用a std::deque
来存储相当多的对象.如果我删除了一堆这些对象,在我看来它的内存使用量并没有减少,与std :: vector类似.
有没有办法减少它?我知道在矢量中你必须使用'交换技巧',我认为它也适用于此,但我宁愿避免使用它,因为它需要复制容器中剩下的所有元素(因此需要你有足够的内存来存储每个对象两次).我并不熟悉deque的实现,但我对它的理解是,有可能在没有大量副本的情况下实现这样的事情(而使用矢量显然不是这样).
我正在使用VC++(Dinkumware)STL,如果这有任何区别的话.
Ree*_*sey 15
在std :: deque中无法直接执行此操作.但是,通过使用临时(这基本上是在缩小容量时std :: vector中发生的事情)很容易做到.
这是一篇关于std :: deque的好文章,将它与std :: vector进行比较.最底部显示了一种交换和收缩矢量的简洁方法,它与deque的工作方式相同.
作为补充信息:
在 C++0x/C++11 中,deque(和其他几个容器)有一个名为“shrink_to_fit”的新函数,它将删除多余的项目并基本上对齐 capacity() == size()