Все задачи, приведенные в книге, входят в состав
Получить дополнительную информацию об электронном задачнике Programming Taskbook и его дополнении Programming Taskbook for STL (а также других его дополнениях) и скачать их дистрибутивы можно на сайте электронного задачника – http://ptaskbook.com/.
Автор считает своим приятным долгом выразить искреннюю благодарность Денису Владимировичу Дуброву и Артему Михайловичу Пеленицыну, которые прочитали первый вариант рукописи и высказали много ценных замечаний.
Раздел 1. Описание библиотеки STL
1.1. Итераторы
1.1.1. Общее описание
В библиотеке STL используются пять основных видов итераторов:
• итераторы чтения;
• итераторы записи;
• однонаправленные итераторы;
• двунаправленные итераторы;
• итераторы произвольного доступа.
Для каждого вида итераторов определен набор операций, причем двумя операциями, доступными для всех видов итераторов, являются
Операция разыменования имеет следующие особенности:
• в случае итераторов чтения операция *
не может использоваться для изменения элемента;• в случае итераторов записи операция *
не может использоваться для получения значения элемента (выражение *p можно использовать только в левой части присваивания);• для прочих итераторов операция *
может использоваться как для получения значения элемента, так и для изменения этого значения.Для однонаправленных итераторов не определяются новые операции (по сравнению с итераторами чтения или записи).
Для двунаправленных итераторов в дополнение к операции инкремента ++ вводится
Наконец, для итераторов произвольного доступа добавляются
Таким образом, набор операций для итераторов произвольного доступа аналогичен набору операций для обычных указателей.
Для итераторов, не являющихся итераторами произвольного доступа, также можно выполнять действия, связанные со смещением и определением расстояния, используя функции из заголовочного файла