【发布时间】:2010-10-29 04:15:06
【问题描述】:
我对双端队列中的迭代器失效感到有点困惑。 (在this问题的上下文中)
以下是摘自 -- C++ 标准库:教程和参考, 尼古拉 M. Josuttis
任何元素的插入或删除 其他在开头或结尾 使所有指针、引用无效, 和引用元素的迭代器 双端队列的。
以下是SGI网站的摘录:
迭代器失效的语义 对于双端队列如下。插入 (包括
push_front和push_back) 使所有引用的迭代器无效 到双端队列。在 a 中间擦除 deque 使所有迭代器失效 参考双端队列。擦除在 双端队列的开始或结束(包括pop_front和pop_back) 使 迭代器仅当它指向 删除元素。
恕我直言,双端队列是块的集合,第一个块在一个方向上增长,最后一个块在相反方向上增长。
- - -
- - -
| - - ^
| - - |
V - - |
- - -
- - -
push_back, push_front 不应该对双端队列迭代器产生任何影响(我同意 Josuttis 的观点)。
正确的解释是什么?标准对此有何规定?
【问题讨论】: