迭代器失效 × 容量边界实验室
先预测,再执行结构修改。红叉表示旧句柄已被判定失效;实验室永远不会解引用、比较或递增它。
已构造对象
备用存储
失效位置
可执行
memory / node map
vector.insert(2)操作后 · new state
先完成预测,再揭晓失效规则。
不用旧句柄,如何修复?
结构修改前保存逻辑位置,或直接接住修改操作返回的新位置。
1 · 丢弃
old_it // 不再使用2 · 取得位置
保存 index 或接住返回值3 · 重新定位
it = container.begin() + index