Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры(ооп) кроме 45,46,52.docx
Скачиваний:
2
Добавлен:
24.09.2019
Размер:
117.21 Кб
Скачать

32. Категории итераторов.Основные итераторы

Категории итераторов

Итераторы, как и контейнеры, реализуются в виде шаблонов классов.

Итераторы обладают такими достоинствами, как, например, автоматическое отслеживание размера типа, на который указывает итератор, автоматизированные

операции инкремента и декремента для перехода от элемента к элементу. Именно благодаря таким возможностям итераторы и являются фундаментом всей библиотеки. Итераторы можно условно разделить на две категории: основные и вспомогательные.

Вспомогательные итераторы

Вспомогательные итераторы названы так потому, что они выполняют

вспомогательные операции по отношению к основным.

Реверсивные итераторы. Некоторые классы-контейнеры спроектированы так, что по хранимым в них элементам данных можно перемещаться в за-

данном направлении. В одних контейнерах это направление от первого элемента к последнему, а в других − от элемента с самым большим значением к элементу, имеющему наименьшее значение.

Итераторы потоков. Важную роль в STL играют итераторы потоков,

которые делятся на итераторы потоков ввода и вывода.

Итератор потока ввода − это удобный программный интерфейс, обеспечивающий доступ к любому потоку, из которого требуется считать данные.

Константный итератор. Последний итератор, который мы рассмотрим, − константный (constant iterator). Он образуется путем модификации основного итератора. Константный итератор не допускает изменения данных, на которые он ссылается. Можно считать константный итератор указателем на константу. Чтобы получить константный итератор, можно воспользоваться типом const_iterator, предопределенным в различных контейнерах. К примеру, так можно описать переменную типа константный итератор на список:

list<int>::const_iterator c_itr;

Итераторы вставки. (insert iterator)

Без них невозможно добавить значения к цепочке объектов. Любой итератор вставки: front_inserter, back_inserter или inserter − выполнит ту же операцию вполне корректно. Первый из них добавляет объекты в начало цепочки, второй − в конец. Третий итератор вставляет объекты в заданное место цепочки. При всем удобстве итераторы вставки имеют довольно жесткие ограничения.

33.Пасивные и активные итераторы

34. Контейнеры последовательностей

Стандартная библиотека С++ предоставляет три контейнера последовательностей – vector, list и deque. Первые два представляют собой классы, организованные по типу массивов, а последний реализует связанный список. Класс vector является одним из наиболее популярных контейнерных классов в STL, динамически изменяющим свои размеры.

Использование контейнера vector наиболее эффективно при добавлении

элементов в конец контейнера. Для приложений, выполняющих частые вставки и удаления в конец и начало контейнера, более предпочтительным является deque. Если требуется выполнять вставки и удаление элементов в любое место контейнера, то обычно используется list.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]