我对双端队列中的迭代器失效感到有点困惑。(在这个问题的背景下)
以下是摘自 -- The C++ Standard Library: A Tutorial and Reference,作者 Nicolai M. Josuttis
除开头或结尾之外的任何元素的插入或删除 都会使引用双端队列元素的所有指针、引用和迭代器无效。
以下是SGI网站的摘录:
deque 的迭代器失效语义如下。Insert(包括
push_front
andpush_back
)使所有引用双端队列的迭代器无效。在双端队列中间进行擦除会使所有引用该双端队列的迭代器无效。仅当迭代器指向被擦除的元素时,在双端队列(包括pop_front
and )的开头或结尾进行 擦除才会使迭代器无效。pop_back
恕我直言,双端队列是块的集合,第一个块在一个方向上增长,最后一个块在相反方向上增长。
- - -
- - -
| - - ^
| - - |
V - - |
- - -
- - -
push_back, push_front
不应该对双端队列迭代器产生任何影响(我同意 Josuttis 的观点)。
正确的解释是什么?标准对此有何评论?