you may assume that the iterator returned by end() is never incremented. If the user does increment this