Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы по сиаоду.doc
Скачиваний:
21
Добавлен:
27.09.2019
Размер:
136.7 Кб
Скачать

Алгоритмы изменения данных

Название этого типа алгоритмов, опять же, говорит само за себя:

  • copy (It sBeg, It sEnd, OIt dBeg) – копирование последовательности;

  • copy_backward (BIt1 sBeg, BIt1 sEnd, BIt2 dEnd) – обратное копирование (в итоге будет обратный порядок следования элементов);

  • fill (FIt beg, FIt end, const T& v) – заполнение интервала указанным значением v;

  • fill_n (OIt beg, Size n, const T& v) – аналогично, заполняет интервал указанным значением;

  • generate (FIt beg, FIt end, Func op) – заполнить интервал значениями сгенерированными функцией op;

  • generate_n (OIt beg, Size n, Func op) – аналогично;

  • replace(FIt beg, FIt end, const T& v, const T& rv) – заменить в последовательности значения v на rv;

  • replace_if (FIt beg, FIt end, UPredicate op, const T& rv) – заменить в последовательности на rv все элементы для которых op(el) истина;

21.Итераторы STL.

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

В случае с более сложными контейнерами итераторы реализуются в виде классов с набором перегруженных операторов. категории итераторов

  • итератор ввода (input iterator) - используется потоками ввода;

  • итератор вывода (output iterator) - используется потоками вывода;

  • однонаправленный итератор (forward iterator) - для прохода по элементам в одном направлении;

  • двунаправленный итератор (bidirectional iterator) - способен пройтись по элементам в любом направлении.

Такие итераторы реализованы в некоторых контейнерных типах stl (list, set, multiset, map, multimap);

  • итераторы произвольного доступа (random access) - через них можно иметь доступ к любому элемента. Такие итераторы реализованы в некоторых контейнерных типах stl (vector, deque, string, array).