将stl deque重新分配我的元素(c ++)?

时间:2012-11-05 15:37:35

标签: c++ deque

嗨我需要一个stl容器,它可以像向量一样被索引,但是不会在内存中移动旧元素,就像向量一样可以调整大小或保留(除非我在开​​头调用reserve一次,其容量足以容纳所有元素,这对我不好)。 (注意我确实解决了对元素的绑定,因此我希望这些元素的地址永远不会改变)。所以我发现了这个双端队列。你觉得这个目的有用吗?重要提示:我只需要推回,但我需要按需小块增长容器。

2 个答案:

答案 0 :(得分:11)

std::deque“在其后面或前面添加或删除元素时,永远不会使指针或对其余元素的引用无效”,所以是的,只有push_back元素保留在原位。 / p>

答案 1 :(得分:5)

仔细阅读the documentation似乎表明,只要您在开头或结尾插入它就不会使指针无效,而指针无效则表示正在复制或移动数据。

它的构造方式不像链表,其中每个元素都是单独分配的,但可能是出于性能原因而作为一组链接数组。改变中间元素的顺序将需要移动数据。