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