<iterator>
Определяет примитивы итератора, предопределенные итераторы и итераторы потока, а также несколько поддерживаемых шаблонов. Предопределенные итераторы включают адаптеры вставки и обратные адаптеры. Существует три класса адаптеров итераторов вставки: передний, задний и общий. Они предоставляют семантику вставки вместо семантики переписи, которую предоставляют итераторы функции-члена контейнера.
#include <iterator>
Заметки
Итераторы представляют собой обобщение указателей, которое абстрагируется от их требований способом, предоставляющим программе C++ возможность применять однородные принципы обработки к разным структурам данных. Итераторы используются в качестве посредников между контейнерами и универсальными алгоритмами. Алгоритмы применяются не к определенным типам данных, а к диапазону, указанному типом итератора. К любой структуре данных, удовлетворяющей требованиям итератора, может применяться алгоритм. Существует пять типов, или категорий итераторов, каждая из которых обладает отдельным набором требований и соответствующими функциями:
Вывод: перемещение вперед, возможно сохранение, но не извлечение значений, обеспеченное структурами данных ostream и inserter.
Ввод: перемещение вперед, возможно извлечение, но не сохранение значений, обеспеченное элементом istream.
Прямой: перемещение вперед, возможно сохранение и извлечение значений.
Двунаправленный: перемещение вперед и назад, возможно сохранение и извлечение значений, предоставленных структурами данных list, set, multiset, map и multimap.
Произвольный доступ: доступ к элементам предоставляется в любом порядке, возможно сохранение и извлечение значений, предоставленных структурами данных vector, deque, string и array.
Итераторы с более значительными требованиями и, как следствие, с более широкими возможностями доступа к элементам, можно использовать вместо итераторов с менее значительными требованиями. Например, при вызове прямого итератора вместо него можно использовать итератор произвольного доступа.
Visual Studio добавляет расширения к итераторам стандартной библиотеки C++, чтобы обеспечить поддержку различных ситуаций режима отладки для проверенных и непроверенных итераторов. Дополнительные сведения см. в разделе Безопасные библиотеки: стандартная библиотека C++.
Функции
Увеличивает итератор на указанное количество позиций. |
|
Создает итератор, может вставлять элементы с обратной стороны указанного контейнера. |
|
Извлекает итератор для первого элемента в указанном контейнере. |
|
Извлекает постоянный итератор для первого элемента в указанном контейнере. |
|
Извлекает постоянный итератор для элемента, следующего за последним элементом в указанном контейнере. |
|
Указывает количество приращений между позициями, которые адресуют два итератора. |
|
Извлекает итератор для элемента, следующего за последним элементом в указанном контейнере. |
|
Создает итератор, может вставлять элементы с передней стороны указанного контейнера. |
|
Адаптер итератора, добавляющий в контейнер новый элемент в указанной позиции. |
|
Создает checked_array_iterator, который может использоваться другими алгоритмами. Примечание Эта функция является предоставляемым Microsoft расширением стандартной библиотеки C++.Код, реализованный с помощью этой функции, нельзя перенести в стандартные среды сборки C, не поддерживающие это расширение Microsoft. |
|
Возвращает итератор перемещения, содержащий предоставленный итератор в качестве сохраненного базового итератора. |
|
Создает unchecked_array_iterator, который может использоваться другими алгоритмами. Примечание Эта функция является предоставляемым Microsoft расширением стандартной библиотеки C++.Код, реализованный с помощью этой функции, нельзя перенести в стандартные среды сборки C, не поддерживающие это расширение Microsoft. |
|
Выполняет итерацию заданное число раз и возвращает новую позицию итератора. |
|
Выполняет обратную итерацию заданное число раз и возвращает новую позицию итератора. |
Операторы
Проверяет объект итератора в левой части оператора на неравенство объекту итератора в правой части. |
|
Проверяет объект итератора в левой части оператора на равенство объекту итератора в правой части. |
|
Определяет, верно ли, что объект итератора в левой части оператора меньше объекта итератора в правой части. |
|
Определяет, верно ли, что объект итератора в левой части оператора меньше или равен объекту итератора в правой части. |
|
Определяет, верно ли, что объект итератора в левой части оператора больше объекта итератора в правой части. |
|
Определяет, верно ли, что объект итератора в левой части оператора больше или равен объекту итератора в правой части. |
|
Добавление смещения к итератору и возврат нового итератора reverse_iterator, который обращается к вставленному элементу в новой позиции смещения. |
|
Вычитает один итератор из другого и возвращает разницу. |
Классы
Класс шаблона описывает объект итератора вывода. Он добавляет элементы в контейнер типа Контейнер, к которому обращается посредством защищенного объекта указателя, хранимый им и именуемый контейнером. |
|
Класс, предоставляющий тип возвращаемого значения для функции iterator_category, которая представляет собой двунаправленный итератор. |
|
Класс, который обращается к массиву при помощи проверенного итератора произвольного доступа. Примечание Этот класс является предоставляемым Microsoft расширением стандартной библиотеки C++.Код, реализованный с помощью этой функции, нельзя перенести в стандартные среды сборки C, не поддерживающие это расширение Microsoft. |
|
Класс, предоставляющий тип возвращаемого значения для функции iterator_category, которая представляет собой прямой итератор. |
|
Класс шаблона описывает объект итератора вывода. Он добавляет элементы в контейнер типа Контейнер, к которому обращается посредством защищенного объекта указателя, хранимый им и именуемый контейнером. |
|
Класс, предоставляющий тип возвращаемого значения для функции iterator_category, которая представляет собой итератор ввода. |
|
Класс шаблона описывает объект итератора вывода. Он добавляет элементы в контейнер типа Контейнер, к которому обращается посредством защищенного объекта указателя, хранимый им и именуемый контейнером. Он также содержит защищаемый объект iterator класса Container::iterator под именем iter. |
|
Данный класс шаблона описывает объект итератора ввода. Он извлекает объекты класса Ty из входного потока, доступ к которому получает через сохраненный объект, относящийся к типу pointer на basic_istream<Elem, Tr>. |
|
Данный класс шаблона описывает объект итератора ввода. Вставляет элементы класса Elem в буфер выходного потока, доступ к которому получает через сохраненный объект, относящийся к типу pointer на basic_streambuf<Elem, Tr>. |
|
Данный класс шаблона используется как базовый тип для всех итераторов. |
|
Вспомогательный класс шаблона, предоставляющий критические типы, связанные с разными типами итераторов, на которые они могут ссылаться аналогичным образом. |
|
Объект move_iterator содержит итератор произвольного доступа типа RandomIterator. Его поведение аналогично поведению итератора произвольного доступа, кроме случаев отмены ссылки. Результат operator* неявно приводится к value_type&&:, чтобы обеспечить rvalue reference. |
|
Класс шаблона описывает объект итератора вывода. Вставляет объекты класса Type в буфер выходного потока, доступ к которому получает через сохраненный объект, относящийся к типу pointer на basic_ostream<Elem, Tr>. |
|
Класс шаблона описывает объект итератора вывода. Вставляет элементы класса Elem в буфер выходного потока, доступ к которому получает через сохраненный объект, относящийся к типу pointer на basic_streambuf<Elem, Tr>. |
|
Класс, предоставляющий тип возвращаемого значения для функции iterator_category, которая представляет собой итератор вывода. |
|
Класс, предоставляющий тип возвращаемого значения для функции iterator_category, которая представляет собой итератор произвольного доступа. |
|
Данный класс шаблона описывает объект, поведение которого аналогично поведению итератора произвольного доступа, но в обратном порядке. |
|
Класс, который обращается к массиву при помощи непроверенного итератора произвольного доступа. Примечание Этот класс является предоставляемым Microsoft расширением стандартной библиотеки C++.Код, реализованный с помощью этой функции, нельзя перенести в стандартные среды сборки C, не поддерживающие это расширение Microsoft. |
См. также
Ссылки
Потокобезопасность в стандартной библиотеке C++
Библиотека стандартных шаблонов