I think the basic idea behind using iterators, containers, and algorithms is to simplify things.
For example, consider printing all elements in a vector and the same task for a list. In either case, create an iterator (of type vector or list, respectively). Then, iterate through the elements of each respective container, printing the contents of each element as you go.
In fact, it is so similar, it is entirely possible to have one algorithm which iterates through any type of container, printing the contents of each element, assuming each type of contained element has a method print().