Iterator category summary
Input iterators can represent input files
Output iterators can represent output files
Forward iterators can represent singly linked lists
Bidirectional iterators can represent doubly linked lists
Random-access iterators can represent arrays