Итераторы и алгоритмы
Материал из SEWiki
Версия от 08:50, 18 марта 2011; Oparin.vsevolod (обсуждение | вклад)
Итераторы
Итератор --- это объект, который указывает на некоторый элемент коллекции (будь то массив или контейнер). Итератор позволяет
- итерировать элементы контейнера;
- задавать последовательность элементов.
В C++ синтаксис итераторов заимствован у указателей.
Выделяют пять типов итераторов.
- Random Access. Это наиболее мощный тип итераторов. Random access поддерживает произвольный доступ к последовательности элементов. По сути равносилен указателем: поддерживает операции инкремента(++), декремента (--), прибавления целого числа (+ val, - val), разыменования (*), доступа к члену (->). Как пример, итераторы такого типа предоставляет vector.
- Bidirectional. Двунаправленный итератор является более слабым типом итераторов: позволяет двигаться только вперед и назад, проходя через каждый элемент. Операции: ++, --, *, ->. Как пример, итераторы такого типа предоставляет list.
- Forward. Однонаправленный итератор позволяет двигаться только в одном направлении. Операции: ++, *, ->
- Input. Однонаправленный итератор, позволяющий только считывать данные, но не записывать.
- Output. Однонаправленный итератор, позволяющий только записывать данные, но не считывать.
- Заметка
- По сути, итератор является паттерном программирования. Представленная классификация задает терминологию, позволяющую определить, о каком типе итератора идет речь.