迭代器(iterator)有时又称光标(cursor)是程序设计的
软件设计模式,可在容器对象(container,例如
链表或
数组)上遍访的接口,设计人员无需关心容器对象的内存分配的实现细节。
各种语言实现迭代器的方式皆不尽同,有些面向对象语言像
Java,
C#,
Ruby,
Python,
Delphi都已将迭代器的特性内置语言当中,完美的跟语言集成,我们称之隐式迭代器(implicit iterator),但像是C++语言本身就没有迭代器的特色,但STL仍利用
模板实现了功能强大的迭代器。STL容器的数据的内存地址可能会重新分配(reallocate),与容器绑定的迭代器仍然可以定位到重新分配后的正确的内存地址。
迭代器另一方面还可以集成
生成器(generator)。有些语言将二者视为同一接口,有些语言如
JavaScript则将之独立化。