Будучи итератором, подразумевает реализацию протокола итератора, не являющегося членом определенного класса - итератором является как итератор. Вы можете написать свои собственные пользовательские классы, которые являются итераторами, и они не будут перечислены в списке тех классов.
С точки зрения «быть итератором» между ними нет никакой разницы. Все они итераторы, и это означает, что вы можете перебирать их. Есть, конечно, могут быть другие различия между ними - они могут иметь дополнительные методы или поведение, определенные - но, как итераторы, итераторы, они одинаковы.
Вы можете просмотреть итератор как своего рода doodad, который «знает, как» перебирать конкретную структуру данных. У разных типов структур данных могут быть свои собственные пользовательские классы для итерации по ним; эти итераторы могут делать разные вещи под капотом, но все они имеют один и тот же публичный интерфейс (протокол итератора).