- •1.Конструктор копирования
- •2.Перегрузка переопределение функц
- •3.Перегрузка бинарных операторов
- •4.Перегрузка унарных операторов
- •5.Static- и Const- компоненты класса
- •6.Организация внешн.Доступа к лок.Комп. Класса(Спецификатор friend)
- •7.Proxi-классы
- •8.Наследование простое
- •9.Множественное наследование
- •10.Виртуальные функции
- •11.Абстрактные классы
- •13.Шаблоны.Параметрезированные классы
- •12.Виртуальный деструктор
- •14.Совместное использование шаблонов и наследование
- •15.Реализация smart-указателя
- •16.Классы поддерживающие транзакцию
- •17.Преобразование типа.Явное преобразование типа
- •18.Преобразование типов определённых в программе
- •20.Строковые потоки,их свойства,назначение.
- •22.Организация файла последовательного доступа
- •24.Генерация исключений в конструкторах.Иерархия искл.В станд.Библиотеке
- •23.Организация файла произвольного доступа
- •25. Спецификации исключительных ситуаций
- •27. Исключительные ситуации.Основы обработки исключительных ситуаций
- •28. Задание собственного неожиданного обработчика
- •29. Исключительная ситуация, генерируемая оператором new
- •30. Перенаправление исключительных ситуаций
- •31.Категории итераторов.Основные итераторы
- •32. Категории итераторов.Основные итераторы
- •33.Пасивные и активные итераторы
- •34. Контейнеры последовательностей
- •35.Ассоциативные контейнеры
- •36.Адаптеры контейнеров
- •37.Патеррн (Абстрактная фабрика)
- •38.Патеррн (Строитель)
- •39. Патеррн (Адаптер)
- •40.Патеррн (Команда)
- •41.Спецификатор final в java
- •42.Вложенные и внутренние классы в java
- •43.Основы наследования в java
- •47.Абстрактные классы в java
- •44.Использование ключевого слова super в java
- •50.Интерфейсы в java
- •51.Множественное наследование в java
- •52.Конфликты имён при комбинировании интерфейсов в java
- •53.Расширение интерфейса в java
- •54. Исключительные ситуации. Обработка исключений java
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.