我使用std :: deque来存储相当多的对象.如果我删除一堆这些对象,在我看来,它的内存使用率并没有减少,与std :: vector类似.
有办法减少吗?我知道在一个向量中,你必须使用“互换技巧”,我认为这也是在这里工作,但我宁愿避免,因为它需要复制容器中剩下的所有元素(因此要求你有足够的内存来存储每个对象两次).我不太熟悉deque的实现,但是我对此的理解是,可以实现这样一个没有大量副本的东西(而使用矢量显然不是这样).
我正在使用VC(Dinkumware)STL,如果这有任何区别.
解决方法
没有办法直接在std :: deque这样做.然而,通过使用临时(这基本上是在缩小它的容量时std :: vector中会发生什么)容易做到这一点.
这是一个good article on std::deque,与std :: vector进行比较.底部显示了一个干净的方式来交换和缩小向量,与deque相同.