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

19.Адаптеры stl.Назначение адаптеров.

Адаптеры - шаблонные классы, которые обеспечивают отображения интерфейса. Например,insert_iterator обеспечивает контейнер интерфейсом итератора вывода.

Адаптеры контейнеров (Container adaptors)

     Часто бывает полезно обеспечить ограниченные интерфейсы контейнеров. Библиотека предоставляетstackqueue и priority_queue через адаптеры, которые могут работать с различными типами последовательностей.

Стек (Stack)

     Любая последовательность, поддерживающая операции backpush_back и pop_back, может использоваться для модификации stack. В частности, могут использоваться vectorlist и deque.

 Например, stack<vector<int> > - целочисленный стек, сделанный из vector, а stack<deque<char> > - символьный стек, сделанный из deque.

Очередь (Queue)

     Любая последовательность, поддерживающая операции frontpush_back и pop_front, может использоваться для модификации queue. В частности, могут использоваться list и deque.

Очередь с приоритетами (Priority queue)

     Любая последовательность, с итератором произвольного доступа и поддерживающая операции front,push_back и pop_front, может использоваться для модификации priority_queue. В частности, могут использоваться vector и deque.

20.Алгоритмы stl.

Алгоритм - это функция для манипулирования объектами, содержащимися в контейнере. Типичные примеры алгоритмов - сортировка и поиск. В STL реализовано порядка 60 алгоритмов, которые можно применять к различным контейнерам, в том числе к массивам, встроенным в язык C++.

Большая часть алгоритмов STL построена по единому принципу. Алгоритм получает на вход пару итераторов — интервал. Если алгоритм осуществлял поиск элемента, то будет возвращен либо

итератор, указывающий на соответствующий элемент, либо конец интервала. Конец интервала уже не указывает ни на какой элемент, что очень удобно. find(iterator begin, iterator end, some_typy value) осуществляет поиск элемента в интервале. find(...) возвращает итератор, указывающий на первый найденный элемент, либо end, если подходящих элементов найдено не было.

Алгоритмы сбора информации

Алгоритмы сбора информации позволяют получать информацию о наборе данных. К этим алгоритмам относятся:

  • count (It beg, It end, const T& v) – подсчет элементов со значением равным v;

  • count_if (It beg, It end, UPredicate op) – подсчет элементов для которых op(el) == true;

  • equal (It1 beg, It1 end, It2 cBeg) – истина, если два диапазона равны;

  • equal (It1 beg, It1 end, It2 cBeg [, BPredicate op]) – проверка эквивалентности двух диапазонов (очень важно не путать понятие эквивалентности и равенства – это не одно и то же!!!);

  • lexicographical_compare (It1 beg1, It1 end1, It2 beg2, It2 end2 [, BPredicate op]) – лексикографическое сравнение двух последовательностей;

Алгоритмы поиска

Как следует из названия, эти алгоритмы занимаются поиском данных в переданной им последовательности:

  • find (It beg, It end, const T& v) – поиск первого элемента со значением v;

  • find_if (It beg, It end, UPredicate op) – поиск первого элемента для которого унарная операция op == true;

  • min_element (It beg, It end) – поиск минимального элемента последовательности;

  • min_element (It beg, It end, BPredicate op) – поиск минимального элемента для которых операция op == true;