The iterator library provides definitions for five kinds of iterators as well as iterator traits, adapters, and utility functions.
Iterator categories
There are five (until C++17)six (since C++17) kinds of iterators: InputIterator, OutputIterator, ForwardIterator, BidirectionalIterator, RandomAccessIterator, and ContiguousIterator (since C++17).
Instead of being defined by specific types, each category of iterator is defined by the operations that can be performed on it. This definition mean