c – 如何从std :: deque释放内存?

我使用std :: deque来存储相当多的对象.如果我删除一堆这些对象,在我看来,它的内存使用率并没有减少,与std :: vector类似.

有办法减少吗?我知道在一个向量中,你必须使用“互换技巧”,我认为这也是在这里工作,但我宁愿避免,因为它需要复制容器中剩下的所有元素(因此要求你有足够的内存来存储每个对象两次).我不太熟悉deque的实现,但是我对此的理解是,可以实现这样一个没有大量副本的东西(而使用矢量显然不是这样).

我正在使用VC(Dinkumware)STL,如果这有任何区别.

解决方法

没有办法直接在std :: deque这样做.然而,通过使用临时(这基本上是在缩小它的容量时std :: vector中会发生什么)容易做到这一点.

这是一个good article on std::deque,与std :: vector进行比较.底部显示一个干净的方式来交换和缩小向量,与deque相同.

相关文章

对象的传值与返回说起函数,就不免要谈谈函数的参数和返回值...
从实现装饰者模式中思考C++指针和引用的选择最近在看...
关于vtordisp知多少?我相信不少人看到这篇文章,多半是来自...
那些陌生的C++关键字学过程序语言的人相信对关键字并...
命令行下的树形打印最近在处理代码分析问题时,需要将代码的...
虚函数与虚继承寻踪封装、继承、多态是面向对象语言的三大特...