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

use*_*655 7 c++ deque

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

Fre*_*Foo 11

std::deque当在元素的后面或前面添加或删除元素时,"永远不会使指针或对其余元素的引用无效",所以是的,当你只保留push_back元素时.


tad*_*man 5

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

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

  • 更像是一个数组数组.链接数组提供比链接列表更好的遍历,但没有随机访问. (2认同)