iterator pattern

Iterator solves a basic problem which occurs very often, independently from any specific domain. It provides a way to access the elements of an aggregate object sequentially without exposing its underlying representation.
Direct iterator support is something you find in a lot of contemporary programming languages today.