9

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

4

2 回答 2

12

std::deque在其背面或正面添加或删除元素时,“永远不会使指针或对其余元素的引用无效”,所以是push_back的,当您只有元素保持原位时。

于 2012-11-05T15:40:23.003 回答
5

仔细阅读文档似乎表明,只要您在开头或结尾插入它就不会使指针无效,而使指针无效是数据正在被复制或移动的标志。

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

于 2012-11-05T15:40:37.320 回答