Объектно-ориентированное программирование на языке С++. Ноткин А.М. - 79 стр.

UptoLike

Составители: 

80
Существует пять типов итераторов:
1. Итераторы ввода (input_iterator) поддерживают операции равен-
ства, разыменования и инкремента.
==, !=, *i, ++i, i++, *i++
Специальным случаем итератора ввода является istream_iterator.
2. Итераторы вывода (output_iterator) поддерживают операции ра-
зыменования, допустимые только с левой стороны присваивания, и инкре-
мента.
++i, i++, *i=t, *i++=t
Специальным случаем итератора вывода является ostream_iterator.
3. Однонаправленные итераторы (forward_iterator) поддерживают
все операции итераторов ввода/вывода
и, кроме того, позволяют без огра-
ничения применять присваивание.
==, !=, =, *i, ++i, i++, *i++
4. Двунаправленные итераторы (biderectional_iterator) обладают
всеми свойствами forward-итераторов, а также имеют дополнительную
операцию декремента (--i, i--, *i--), что позволяет им проходить контейнер
в обоих направлениях.
5. Итераторы произвольного доступа (random_access_iterator) об-
ладают всеми свойствами biderectional-итераторов, а также поддерживают
операции сравнения и адресной арифметики, то есть непосредственный
доступ
по индексу.
i+=n, i+n, i-=n, i-n, i1-i2, i[n], i1<i2, i1<=i2, i1>i2, i1>=i2
В STL также поддерживаются обратные итераторы (reverse
iterators). Обратными итераторами могут быть либо двунаправленные ите-
раторы, либо итераторы произвольного доступа, но проходящие последо-
вательность в обратном направлении.
Вдобавок к контейнерам, алгоритмам и итераторам в STL поддержи-
вается ещё несколько стандартных компонентов. Главными среди них яв-
ляются распределители памяти, предикаты и
функции сравнения.
У каждого контейнера имеется определенный для него распредели-
тель памяти (allocator), который управляет процессом выделения памяти
для контейнера.
По умолчанию распределителем памяти является объект класса allo-
cator. Можно определить собственный распределитель.
В некоторых алгоритмах и контейнерах используется функция осо-
бого типа, называемая предикатом. Предикат может быть унарным и би-
нарным. Возвращаемое значение: истина либо ложь. Точные условия по-
лучения того или иного значения определяются программистом. Тип унар-
                                    80

       Существует пять типов итераторов:
       1. Итераторы ввода (input_iterator) поддерживают операции равен-
ства, разыменования и инкремента.
       ==, !=, *i, ++i, i++, *i++
       Специальным случаем итератора ввода является istream_iterator.
       2. Итераторы вывода (output_iterator) поддерживают операции ра-
зыменования, допустимые только с левой стороны присваивания, и инкре-
мента.
       ++i, i++, *i=t, *i++=t
       Специальным случаем итератора вывода является ostream_iterator.
       3. Однонаправленные итераторы (forward_iterator) поддерживают
все операции итераторов ввода/вывода и, кроме того, позволяют без огра-
ничения применять присваивание.
       ==, !=, =, *i, ++i, i++, *i++
       4. Двунаправленные итераторы (biderectional_iterator) обладают
всеми свойствами forward-итераторов, а также имеют дополнительную
операцию декремента (--i, i--, *i--), что позволяет им проходить контейнер
в обоих направлениях.
       5. Итераторы произвольного доступа (random_access_iterator) об-
ладают всеми свойствами biderectional-итераторов, а также поддерживают
операции сравнения и адресной арифметики, то есть непосредственный
доступ по индексу.
       i+=n, i+n, i-=n, i-n, i1-i2, i[n], i1i2, i1>=i2

       В STL также поддерживаются обратные итераторы (reverse
iterators). Обратными итераторами могут быть либо двунаправленные ите-
раторы, либо итераторы произвольного доступа, но проходящие последо-
вательность в обратном направлении.
       Вдобавок к контейнерам, алгоритмам и итераторам в STL поддержи-
вается ещё несколько стандартных компонентов. Главными среди них яв-
ляются распределители памяти, предикаты и функции сравнения.
       У каждого контейнера имеется определенный для него распредели-
тель памяти (allocator), который управляет процессом выделения памяти
для контейнера.
       По умолчанию распределителем памяти является объект класса allo-
cator. Можно определить собственный распределитель.
       В некоторых алгоритмах и контейнерах используется функция осо-
бого типа, называемая предикатом. Предикат может быть унарным и би-
нарным. Возвращаемое значение: истина либо ложь. Точные условия по-
лучения того или иного значения определяются программистом. Тип унар-