Итератор - это просто тип, который обеспечивает интерфейс, необходимый для итераторов - они различны для разных типов итераторов и указаны в разделе 24.1 стандарта C ++ (Требования к итераторам).
Способ реализации итераторов зависит от того, над чем они итерируются - для векторов они обычно являются оберткой вокруг одного указателя на массив (в любом случае в сборках релиза), для более сложных контейнеров - более сложной реализацией. Для открытых диапазонов они будут содержать состояние любого алгоритма, который может использоваться для генерации элементов.
Обратите внимание, что указатель на элемент в массиве соответствует требованиям итератора произвольного доступа, поэтому в некоторой степени они взаимозаменяемы.