
- •16. Библиотека шаблонов stl. Состав библиотеки шаблонов. Основные достоинства и недостатки stl. Аргументация применения.
- •17.Контейнеры stl. Классификация контейнеров stl. Пример применения контейнеров.
- •18. Определение аллокаторов.
- •19.Адаптеры stl.Назначение адаптеров.
- •20.Алгоритмы stl.
- •Алгоритмы сбора информации
- •Алгоритмы поиска
- •Алгоритмы изменения данных
Алгоритмы изменения данных
Название этого типа алгоритмов, опять же, говорит само за себя:
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).