An iterator can be compared for equality to another iterator. They are equal when they point to the same position, and are otherwise not equal.
An iterator can be dereferenced using the * operator,
to obtain the value being denoted by the iterator.
Depending upon the type of iterator and variety of underlying container,
this value can also sometimes be used as the target of an assignment in
order to change the value being held by the container.
An iterator can be incremented, so that it refers to the next element in sequence, using the operator ++.
What makes iterators possible is that all of these can be overloaded.
Intro OOP, Chapter 20, Slide 07