嗨,我需要一个STL容器,它可以被索引像一个载体,但在这样一个载体将有调整或储备做(除非我致电的容量足以让所有的元素,这是年初储备曾经的记忆不动旧元素不是为我好)。 (注意:我这样做,我希望这些元素的地址不会改变地址绑定的元素)。 所以,我发现此双端。 你是否认为这是很好的为这个目的是什么? 重要提示:我只需要推回,但我需要成长的容器上的一小块一小块的需求。
Answer 1:
std::deque
“永不无效指针或引用的元素的其余部分”添加或删除在其前面或后面的元素时,所以是的,当你只push_back
元素留在原地。
Answer 2:
认真阅读文件似乎表明,只要你插入的开头或结尾也不会无效指针,无效的指针是数据被复制或移动的迹象。
它的构造方式是不太像一个链表,其中每个元素被单独分配,但可能是由于性能原因,一组连接的阵列。 在中间改变元素的顺序将需要来回移动数据。
文章来源: will stl deque reallocate my elements (c++)?