Ann*_*inn 0 c++ memory list visual-studio-2010 deque
我正在寻找一个保留其所包含对象在内存中的位置的容器(它的指针保持有效)
容器会不断增大和缩小。中间的元素可以被删除,但是中间没有插入;所有元素都被推到容器的背面。在这种情况下,迭代器的有效性并不重要,我唯一关心的是指针仍然有效。
在这种情况下是std::deque安全有效的选择吗?我以前使用过列表,但它分配的次数太多,在这种情况下没有用处。
在中间插入或删除元素会使所有迭代器和引用无效。
在开头/结尾插入元素会使迭代器无效,但不会影响引用。
删除开头/结尾的元素不会影响迭代器或引用,除了指向已删除元素的迭代器或引用,也可能影响末尾迭代器。
http://en.cppreference.com/w/cpp/container/deque/erase
所有迭代器和引用都无效,除非被擦除的元素位于容器的末尾或开头,在这种情况下,只有迭代器和对被擦除元素的引用无效。
http://en.cppreference.com/w/cpp/container/deque/push_back
所有迭代器,包括尾后迭代器,都将失效。没有任何参考文献会失效。
(对正面或背面元素进行操作的其他方法也有类似的注释)。