关于deque中的迭代器失效,我有点困惑.(在这个问题的背景下)
以下是摘自 - The C++标准库:教程和参考,作者:Nicolai M. Josuttis
除开头或结尾之外的任何元素的插入或删除都会 使引用双端队列元素的所有指针,引用和迭代器无效.
以下是SGI网站的摘录:
deque的迭代器失效的语义如下.Insert(包括
push_front和push_back)使引用deque的所有迭代器无效.在双端队列中间擦除使所有引用双端队列的迭代器无效.只有当它指向已擦除的元素时,在双端队列的开头或结尾处擦除(包括pop_front和pop_back)才会使迭代器无效.
恕我直言,deque是块的集合,第一个块在一个方向上生长,最后一个块在相反方向上生长.
- - -
- - -
| - - ^
| - - |
V - - |
- - -
- - -
Run Code Online (Sandbox Code Playgroud)
push_back, push_front 不应该对deque迭代器产生任何影响(我同意Josuttis).
什么是正确的解释?标准对此有何看法?