我正在使用一个std::deque
存储相当大量的对象。如果我删除一堆这些对象,在我看来,它的内存使用量不会减少,与 std::vector 类似。
有办法减少吗?我知道在向量中你必须使用“交换技巧”,我认为它在这里也适用,但我宁愿避免这种情况,因为它需要复制容器中剩下的所有元素(因此要求你有足够的内存来存储每个对象两次)。我不太熟悉双端队列的实现,但我对它的理解是,不需要大量副本就可以实现这样的事情(而使用向量显然不行)。
我正在使用 VC++ (Dinkumware) STL,如果这有什么区别的话。
无法直接在 std::deque 中执行此操作。然而,通过使用临时变量很容易做到(这基本上就是当你缩小 std::vector 的容量时发生的情况)。
这里有一个关于 std::deque 的好文章,将其与 std::vector 进行比较。最底部显示了一种交换和收缩向量的干净方法,其工作原理与双端队列相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)