A class that is used to traverse through the objects maintained by a container class.
There are five categories of iterators:
_ input iterators,
_ output iterators,
_ forward iterators,
_ bidirectional iterators,
_ random access.
An iterator is an entity that gives access to the contents of a container object without violating encapsulation constraints. Access to the contents is granted on a one-at-a-time basis in order. The order can be storage order (as in lists and queues) or some arbitrary order (as inarray indices) or according to some ordering relation (as in an ordered 3 binary tree). The iterator is a construct, which provides an interface that, when called, yields either the next element in the container, or some value denoting the fact that there are no more elements to examine. Iterators hide the details of access to and update of the elements of a container class.