<iterator>

Определяет предопределенные итераторы итераторы потоков, примитивы итератора и вспомогательные шаблоны.

Требования

Заголовок: <iterator>

Пространство имен: std

Замечания

Итераторы — это обобщение указателей, которые позволяют программе C++ работать с различными структурами данных в однородном режиме. Вместо того чтобы работать с определенными типами данных, алгоритмы работают с диапазоном значений, как указано типом итератора. Алгоритмы могут работать с любой структурой данных, удовлетворяющей требованиям итератора.

В C++20 есть шесть категорий итераторов. Итераторы упорядочены в иерархии возможностей. Их возможности задаются концепциями C++20. Описание различных итераторов и их возможностей см . в разделе "Основные понятия итератора"

Visual Studio добавил расширения в итераторы стандартной библиотеки C++ для поддержки отладки проверяемых и снятых итераторов. Дополнительные сведения см. в разделе Безопасные библиотеки: стандартная библиотека C++.

Участники

Функции

Имя Описание
advance Увеличивает итератор на указанное количество позиций.
back_inserter Создает итератор, может вставлять элементы с обратной стороны указанного контейнера.
begin Извлекает итератор для первого элемента в указанном контейнере.
cbegin Извлекает итератор только для чтения в первый элемент в указанном контейнере.
cend Извлекает итератор только для чтения в элемент, который следует последнему элементу в указанном контейнере.
crbegin Получите обратный итератор только для чтения до начала указанного контейнера.
crend Получите sentinel в конце возвращаемого crbegin() значения.
data Получите указатель на первый элемент в указанном контейнере.
distance Указывает количество приращений между позициями, которые адресуют два итератора.
end Извлекает итератор для элемента, следующего за последним элементом в указанном контейнере.
empty Проверьте, пуст ли указанный контейнер.
front_inserter Создает итератор, может вставлять элементы с передней стороны указанного контейнера.
inserter Адаптер итератора, добавляющий в контейнер новый элемент в указанной позиции.
make_checked_array_iterator Создает объект checked_array_iterator , который можно использовать другими алгоритмами. Примечание. Эта функция — расширение Майкрософт для стандартной библиотеки C++. Код, реализованный с помощью этой функции, не переносимый в среды сборки C++ Standard, которые не поддерживают это расширение Майкрософт.
make_move_iterator Возвращает итератор перемещения, содержащий предоставленный итератор в качестве сохраненного базового итератора.
make_unchecked_array_iterator Создает объект unchecked_array_iterator , который можно использовать другими алгоритмами. Примечание. Эта функция — расширение Майкрософт для стандартной библиотеки C++. Код, реализованный с помощью этой функции, не переносимый в среды сборки C++ Standard, которые не поддерживают это расширение Майкрософт.
next Выполняет итерацию заданное число раз и возвращает новую позицию итератора.
prev Выполняет обратную итерацию заданное число раз и возвращает новую позицию итератора.
rbegin Получите обратный итератор к началу указанного контейнера.
rend Получите обратный итератор в sentinel в конце указанного контейнера.
size Получение количества элементов.

Операторы

Имя Описание
operator!= Проверяет, не равен ли объект итератора слева от оператора итератору справа.
operator== Проверяет объект итератора в левой части оператора на равенство объекту итератора в правой части.
operator< Определяет, верно ли, что объект итератора в левой части оператора меньше объекта итератора в правой части.
operator<= Определяет, верно ли, что объект итератора в левой части оператора меньше или равен объекту итератора в правой части.
operator> Определяет, верно ли, что объект итератора в левой части оператора больше объекта итератора в правой части.
operator>= Определяет, верно ли, что объект итератора в левой части оператора больше или равен объекту итератора в правой части.
operator+ Добавление смещения к итератору и возврат нового итератора reverse_iterator, который обращается к вставленному элементу в новой позиции смещения.
operator- Вычитает один итератор из другого и возвращает разницу.

Классы

Имя Описание
back_insert_iterator Шаблон класса описывает выходной итератор объекта. Он вставляет элементы в контейнер типа Container, к которому он обращается через защищенный pointer объект, который он хранит, называется контейнером.
bidirectional_iterator_tag Класс, предоставляющий тип возвращаемого значения для iterator_category функции, представляющей двунаправленный итератор.
checked_array_iterator Класс, который обращается к массиву при помощи проверенного итератора произвольного доступа. Примечание. Этот класс — расширение Майкрософт для стандартной библиотеки C++. Код, реализованный с помощью этой функции, не переносимый в среды сборки C++ Standard, которые не поддерживают это расширение Майкрософт.
forward_iterator_tag Класс, предоставляющий тип возвращаемого значения для iterator_category функции, представляющей итератор пересылки.
front_insert_iterator Шаблон класса описывает выходной итератор объекта. Он вставляет элементы в контейнер типа Container, к которому он обращается через защищенный pointer объект, который он хранит, называется контейнером.
input_iterator_tag Класс, предоставляющий тип возвращаемого значения для iterator_category функции, представляющей входной итератор.
insert_iterator Шаблон класса описывает выходной итератор объекта. Он вставляет элементы в контейнер типа Container, к которому он обращается через защищенный pointer объект, который он хранит, называется контейнером. Он также сохраняет защищенный iterator объект класса Container::iterator, называемый iter.
istream_iterator Шаблон класса описывает входной итераторный объект. Он извлекает объекты класса Ty из входного потока, к которому он обращается через объект, на который он хранит, указателя basic_istream<Elem, Tr>типа.
istreambuf_iterator Шаблон класса описывает входной итераторный объект. Он вставляет элементы класса Elem в выходной буфер потока, к которому он обращается через объект, в котором он хранит тип pointer basic_streambuf<Elem, Tr>.
iterator Шаблон класса используется в качестве базового типа для всех итераторов.
iterator_traits Вспомогательный класс шаблона, предоставляющий критические типы, связанные с разными типами итераторов, на которые они могут ссылаться аналогичным образом.
move_iterator Объект move_iterator содержит итератор произвольного доступа типа RandomIterator. Его поведение аналогично поведению итератора произвольного доступа, кроме случаев отмены ссылки. Результат operator* неявно приводится к value_type&&:, чтобы обеспечить rvalue reference.
ostream_iterator Шаблон класса описывает выходной итератор объекта. Он вставляет объекты класса Type в выходной поток, к которому он обращается через объект, в котором он хранит тип pointer basic_ostream<Elem, Tr>.
ostreambuf_iterator Шаблон класса описывает выходной итератор объекта. Он вставляет элементы класса Elem в выходной буфер потока, к которому он обращается через объект, на который он хранит, указателя basic_streambuf<Elem, Tr>типа.
output_iterator_tag Класс, предоставляющий тип возвращаемого значения для iterator_category функции, представляющей итератор выходных данных.
random_access_iterator_tag Класс, предоставляющий тип возвращаемого значения для iterator_category функции, представляющей итератор случайного доступа.
reverse_iterator Шаблон класса описывает объект, который ведет себя как итератор случайного доступа, только в обратном направлении.
unchecked_array_iterator Класс, который обращается к массиву при помощи непроверенного итератора произвольного доступа. Примечание. Этот класс — расширение Майкрософт для стандартной библиотеки C++. Код, реализованный с помощью этой функции, не переносимый в среды сборки C++ Standard, которые не поддерживают это расширение Майкрософт.

Основные понятия

В пространстве имен определены std следующие понятия. Они применяются к итераторам, а также относятся к категориям итератора для диапазонов, описанных в <ranges> концепциях.

Концепция итератора Description
bidirectional_iteratorC++20 Указывает итератор, который может считывать и записывать как вперед, так и назад.
contiguous_iteratorC++20 Указывает итератор, элементы которого являются последовательными в памяти, одинаковым размером и могут быть доступны с помощью арифметики указателя.
forward_iteratorC++20 Указывает итератор, который может читать (и, возможно, записывать) несколько раз.
input_iteratorC++20 Указывает итератор, который можно прочитать по крайней мере один раз.
input_or_output_iteratorC++20 Основа итеромии концепции таксономии.
output_iterator Указывает итератор, в который можно написать.
random_access_iteratorC++20 Указывает итератор, который можно читать и записывать по индексу.
sentinel_forC++20 Указывает sentinel для типа итератора.
sized_sentinel_forC++20 Указывает, что итератор и его sentinel можно вычитать (используя -), чтобы найти их разницу в постоянном времени.

См. также

Справочник по файлам заголовков
Потокобезопасность в стандартной библиотеке C++
Справочник по стандартной библиотеке C++