<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_iterator C++20 |
Указывает итератор, который может считывать и записывать как вперед, так и назад. |
contiguous_iterator C++20 |
Указывает итератор, элементы которого являются последовательными в памяти, одинаковым размером и могут быть доступны с помощью арифметики указателя. |
forward_iterator C++20 |
Указывает итератор, который может читать (и, возможно, записывать) несколько раз. |
input_iterator C++20 |
Указывает итератор, который можно прочитать по крайней мере один раз. |
input_or_output_iterator C++20 |
Основа итеромии концепции таксономии. |
output_iterator |
Указывает итератор, в который можно написать. |
random_access_iterator C++20 |
Указывает итератор, который можно читать и записывать по индексу. |
sentinel_for C++20 |
Указывает sentinel для типа итератора. |
sized_sentinel_for C++20 |
Указывает, что итератор и его sentinel можно вычитать (используя - ), чтобы найти их разницу в постоянном времени. |
См. также
Справочник по файлам заголовков
Потокобезопасность в стандартной библиотеке C++
Справочник по стандартной библиотеке C++