To be able to use functions like the find algorithm, an iterator must be able to be compared to other iterators, must know how to dereference to get its associated value, must be able to be incremented using the ++ operator.
What makes iterators possible in C++ is that all of these can be overloaded and given new meanings.