知识卡片

迭代器删除元素须同步移动游标

普通读书笔记卡 · 1991.c

内容

实现[[迭代器模式的定义与四个角色]]中具体迭代器的remove()方法需同时完成两个逻辑:删除 游标当前指向的元素,并让游标正确指向下一个元素。只删除不处理游标位置,后续元素会因整体 前移被跳过或指向已不存在的索引。发散:这是自定义迭代器最容易踩的坑——删除会改变后续 元素索引,游标必须跟着调整,否则遍历序列会错位。

参考来源

- 位置:《设计模式之禅(第2版)》第20章《迭代器模式》(源文件:_epub-src/text/part0091.html) - 结论依据:原文在通用迭代器代码后特别注明"开发系统时,迭代器的删除方法应该完成两个逻辑:一是删除当前元素,二是当前游标指向下一个元素"。 - 原始内容:开发系统时,迭代器的删除方法应该完成两个逻辑:一是删除当前元素,二是当前游标指向下一个元素。