What is an iterator?
Iterators provide a unified API for accessing different containers. On the surface, they work similar to pointers: std::vector<int> vec { 1, 2, 3 }; auto it = vec.begin(); // gives us an iterator which points to '1' it++; // start now points to '2' it++; // start now points to '3' std::cout << *it << '\n'; // prints '3' TODO Noncontiguous containers (std::list): linked list isn’t a contiguous sequence, so it’s impossible to relay on pointers for iteration instead you should provide an iterator that performs the same arithmetic operations as a pointer would do....