Пространства имён
Варианты
Действия

Расширения для диапазонов

Материал из cppreference.com
 
 
Технические спецификации
Библиотека файловой системы (ТС файловой системы)
Основы библиотеки (ТС основ библиотеки)
Основы библиотеки 2 (ТС основ библиотеки v2)
Основы библиотеки 3 (ТС основы библиотеки v3)
Расширения для параллелизма (ТС параллелизма)
Расширения для параллелизма 2 (ТС параллелизма v2)
Расширения для конкуренции 2 (ТС конкуренции v2)
Концепты (ТС концепций)
Диапазоны (ТС диапазонов)
Рефлексия (ТС рефлексии)
Специальные математические функции (ТО специальные функции)
 
 

Расширения C++ для Диапазонов, ISO/IEC ТС 21425:2017, определяют одну модификацию ядра языка и определяют новые компоненты для стандартной библиотеки C++, перечисленные на этой странице.

ТС Диапазонов основана на стандарте C++14, изменённом ТС Концептов.

Изменения ядра языка

ТС Диапазонов изменяет спецификацию основанного на диапазоне цикла for, чтобы разрешить начальный и конечный итераторы разных типов. Это изменение разрешает использование ограничителей и также присутствует в C++17.

Концепты

Концепты ядра языка
Определены в заголовочном файле <experimental/ranges/concepts>
Определены в пространстве имён std::experimental::ranges
указывает, что тип совпадает с другим типом
(концепт) [править]
указывает, что тип является производным от другого типа
(концепт) [править]
указывает, что тип неявно преобразуется в другой тип
(концепт) [править]
указывает, что два типа имеют общий ссылочный тип
(концепт) [править]
указывает, что два типа имеют общий тип
(концепт) [править]
указывает, что тип является целочисленным типом
(концепт) [править]
указывает, что тип является целочисленным типом со знаком
(концепт) [править]
указывает, что тип является целочисленным типом без знака
(концепт) [править]
указывает, что тип может быть присвоен из другого типа
(концепт) [править]
указывает, что тип можно обменять или что два типа можно поменять местами друг с другом
(концепт) [править]
Концепты сравнения
Определены в заголовочном файле <experimental/ranges/concepts>
Определены в пространстве имён std::experimental::ranges
указывает, что тип может использоваться в Логических контекстах
(концепт) [править]
указывает, что два типа можно сравнивать на равенство с помощью операторов == и !=
(концепт) [править]
указывает, что оператор == является отношением эквивалентности
(концепт) [править]
указывает, что операторы сравнения для типа дают общий порядок
(концепт) [править]
Концепты объектов
Определены в заголовочном файле <experimental/ranges/concepts>
Определены в пространстве имён std::experimental::ranges
указывает, что объект данного типа может быть уничтожен
(концепт) [править]
указывает, что переменная типа может быть создана из набора типов аргументов или привязана к ним
(концепт) [править]
указывает, что объект типа может быть сконструирован по умолчанию
(концепт) [править]
указывает, что объект типа может быть сконструирован перемещением
(концепт) [править]
указывает, что объект типа может быть создан путём копирования и перемещения
(концепт) [править]
указывает, что объект типа можно перемещать и менять местами
(концепт) [править]
указывает, что объект типа можно копировать, перемещать и менять местами
(концепт) [править]
указывает, что объект типа можно копировать, перемещать, менять местами и создавать по умолчанию
(концепт) [править]
указывает, что тип является регулярным, то есть одновременно и Semiregular и EqualityComparable
(концепт) [править]
Вызываемые концепты
Определены в заголовочном файле <experimental/ranges/concepts>
Определены в пространстве имён std::experimental::ranges
указывает, что вызываемый тип может быть вызван с заданным набором типов аргументов
(концепт) [править]
указывает, что вызываемый тип является логическим предикатом
(концепт) [править]
указывает, что вызываемый тип является бинарным отношением
(концепт) [править]
указывает, что Relation налагает строгий слабый порядок
(концепт) [править]
Концепты генератора случайных чисел
Определены в заголовочном файле <experimental/ranges/random>
Определены в пространстве имён std::experimental::ranges
указывает, что тип квалифицируется как универсальный генератор случайных чисел
(концепт) [править]

Основные утилиты

Утилиты компонентов
Определены в заголовочном файле <experimental/ranges/utility>
Определены в пространстве имён std::experimental::ranges
меняет местами значения двух объектов
(объект точки настройки) [править]
заменяет аргумент новым значением и возвращает его предыдущее значение
(шаблон функции) [править]
Объекты функции
Определены в заголовочном файле <experimental/ranges/functional>
Определены в пространстве имён std::experimental::ranges
вызывает объект Callable с заданными аргументами
(шаблон функции) [править]
объект функция, реализующий x == y
(шаблон класса) [править]
объект функция, реализующий x != y
(шаблон класса) [править]
объект функция, реализующий x > y
(шаблон класса) [править]
объект функция, реализующий x < y
(шаблон класса) [править]
объект функция, реализующий x >= y
(шаблон класса) [править]
объект функция, реализующий x <= y
(шаблон класса) [править]
объект функция, который возвращает свой аргумент без изменений
(класс) [править]
Метапрограммирование и свойства типов
Определены в заголовочном файле <experimental/ranges/type_traits>
Определены в пространстве имён std::experimental::ranges
проверяет, можно ли поменять местами объекты одного типа на объекты того же или другого типа
(шаблон класса) [править]
определяет общий ссылочный тип набора типов
(шаблон класса) [править]
определяет общий тип набора типов
(шаблон класса) [править]
Помеченные пары и кортежи
Определены в заголовочном файле <experimental/ranges/utility>
Определены в пространстве имён std::experimental::ranges
указывает, что тип является спецификатором тега
(концепт) [править]
указывает, что тип представляет спецификатор тега и тип его элемента
(концепт) [править]
дополняет кортежный тип именованными элементами доступа
(шаблон класса) [править]
псевдоним шаблона для помеченного std::pair
(псевдоним шаблона) [править]
удобная функция для создания tagged_pair
(шаблон функции) [править]
Определены в заголовочном файле <experimental/ranges/tuple>
псевдоним шаблона для помеченного std::tuple
(псевдоним шаблона) [править]
удобная функция для создания tagged_tuple
(шаблон функции) [править]
Определены в заголовочном файле <experimental/ranges/algorithm>
Определены в пространстве имён std::experimental::ranges::tag
спецификаторы тегов для использования с ranges::tagged
(класс) [править]

Итераторы

Определены в заголовочном файле <experimental/ranges/iterator>
Концепты, связанные с итераторами
Определены в пространстве имён std::experimental::ranges
Концепты итераторов
указывает, что тип доступен для чтения с помощью оператора *
(концепт) [править]
указывает, что значение может быть записано в объект, на который ссылается итератор
(концепт) [править]
указывает, что тип Semiregular может инкрементироваться с помощью операторов пре- и пост-инкремента
(концепт) [править]
указывает, что операция инкремента для типа WeaklyIncrementable сохраняет равенство, а этот тип EqualityComparable
(концепт) [править]
указывает, что объекты типа могут быть инкрементированы и разыменованы
(концепт) [править]
указывает, что объект типа является ограничителем для типа Iterator
(концепт) [править]
указывает, что оператор - может быть применён к итератору и ограничителю для вычисления их разницы за постоянное время
(концепт) [править]
указывает, что тип является итератором ввода, то есть значения, на которые он ссылается, могут быть прочитаны, и он может быть как пре- так и пост-инкрементирован
(концепт) [править]
указывает, что тип является итератором вывода для данного типа значения, то есть в него могут быть записаны значения этого типа, и он может быть как пре-, так и пост-инкрементирован
(концепт) [править]
указывает, что InputIterator является прямым итератором, поддерживающим сравнение на равенство и многопроходность
(концепт) [править]
указывает, что ForwardIterator является двунаправленным итератором, поддерживающим движение назад
(концепт) [править]
указывает, что BidirectionalIterator это итератор с произвольным доступом, поддерживающий продвижение за постоянное время и индексирование
(концепт) [править]
Косвенно вызываемые концепты
указывает, что вызываемый тип может быть вызван в результате разыменования типа Readable
(концепт) [править]
указывает, что вызываемый объект при вызове с результатом разыменования типа Readable, соответствует Predicate
(концепт) [править]
указывает, что вызываемый объект при вызове в результате разыменования некоторых типов Readable, соответствует Relation
(концепт) [править]
указывает, что вызываемый объект при вызове в результате разыменования некоторых типов Readable, соответствует StrictWeakOrder
(концепт) [править]
Общие требования к алгоритмам
указывает, что значения могут быть перемещены из типа Readable в тип Writable
(концепт) [править]
указывает, что значения могут быть перемещены из типа Readable в тип Writable и что перемещение может быть выполнено через промежуточный объект
(концепт) [править]
указывает, что значения могут быть скопированы из типа Readable в тип Writable
(концепт) [править]
указывает, что значения могут быть скопированы из типа Readable в тип Writable и что копирование может быть выполнено через промежуточный объект
(концепт) [править]
указывает, что значения, на которые ссылаются два типа Readable, можно поменять местами
(концепт) [править]
указывает, что значения, на которые ссылаются два типа Readable, можно сравнивать
(концепт) [править]
определяет общие требования к алгоритмам, которые меняют порядок элементов на месте
(концепт) [править]
определяет требования к алгоритмам, которые объединяют отсортированные последовательности в выходную последовательность путём копирования элементов
(концепт) [править]
определяет общие требования алгоритмов, которые переставляют последовательности в упорядоченные последовательности
(концепт) [править]
Утилиты концептов
вычисляет результат вызова вызываемого объекта на результате разыменования некоторого набора типов Readable
(шаблон класса) [править]
вспомогательный шаблон для определения ограничений для алгоритмов, принимающих прогнозы
(шаблон класса) [править]
Примитивы итераторов
Утилиты итераторов
Определены в пространстве имён std::experimental::ranges
приводит результат разыменования объекта к связанному с ним ссылочному типу правостороннего значения
(объект точки настройки) [править]
меняет местами значения, на которые ссылаются два разыменовываемых объекта
(объект точки настройки) [править]
Свойства итераторов
Определены в пространстве имён std::experimental::ranges
получает разностный тип для типа WeaklyIncrementable
(шаблон класса) [править]
получает тип значения типа Readable
(шаблон класса) [править]
получает категорию итератора для типа итератора ввода
(шаблон класса) [править]
класс свойств совместимости, который собирает типы, связанные с итератором
(псевдоним шаблона) [править]
получает связанные ссылочные типы разыменовываемого объекта
(псевдоним шаблона) [править]
Теги категорий итераторов
Определены в пространстве имён std::experimental::ranges
пустые типы классов, используемые для обозначения категорий итераторов
(класс) [править]
Специализации std::iterator_traits
Определены в пространстве имён std
специализация std::iterator_traits для итераторов ТС диапазонов
(специализация шаблона класса) [править]
Операции итераторов
Определены в пространстве имён std::experimental::ranges
продвигает итератор на заданное расстояние
(шаблон функции) [править]
возвращает расстояние между итератором и ограничителем или между началом и концом диапазона
(шаблон функции) [править]
инкрементирует итератор
(шаблон функции) [править]
декрементирует итератор
(шаблон функции) [править]
Адаптеры итераторов
Определены в пространстве имён std::experimental::ranges
адаптер итератора для обхода в обратном порядке
(шаблон класса) [править]
адаптер итератора для вставки в конец контейнера
(шаблон класса) [править]
адаптер итератора для вставки в начало контейнера
(шаблон класса) [править]
адаптер итератора для вставки в контейнер
(шаблон класса) [править]
адаптер итератора, который разыменовывается ссылку на правостороннее значение
(шаблон класса) [править]
адаптер ограничитель для использования с move_iterator
(шаблон класса) [править]
адаптирует пару итератор-ограничитель к общему типу итератора для использования с устаревшими алгоритмами
(шаблон класса) [править]
адаптер итератора, отслеживающий расстояние от начальной позиции
(шаблон класса) [править]
пустой тип ограничителя для использования с типами итераторов, которые знают границы своего диапазона
(класс) [править]
оболочка для возможно висячего итератора
(шаблон класса) [править]
псевдоним шаблона, который обертывает тип итератора диапазона rvalue с висячими
(псевдоним шаблона) [править]
тип ограничителя, используемый с любым итератором для обозначения бесконечного диапазона
(класс) [править]
Итераторы потоков
Определены в пространстве имён std::experimental::ranges
итератор ввода, который читает из std::basic_istream
(шаблон класса) [править]
итератор вывода, записывающий в std::basic_ostream
(шаблон класса) [править]
итератор ввода, который читает из std::basic_streambuf
(шаблон класса) [править]
итератор вывода, записывающий в std::basic_streambuf
(шаблон класса) [править]

Диапазоны

Определены в заголовочном файле <experimental/ranges/range>
Концепты диапазонов
указывает, что тип является диапазоном, то есть предоставляет итератор begin и ограничитель end
(концепт) [править]
указывает, что диапазон узнаёт свой размер за константное время
(концепт) [править]
указывает, что диапазон является представлением, то есть имеет константное время копирования/перемещения/присвоения
(концепт) [править]
указывает, что диапазон имеет идентичные типы итератора и ограничителя
(концепт) [править]
указывает диапазон, тип итератора которого соответствует InputIterator
(концепт) [править]
указывает диапазон, тип итератора которого соответствует OutputIterator
(концепт) [править]
указывает диапазон, тип итератора которого соответствует ForwardIterator
(концепт) [править]
указывает диапазон, тип итератора которого соответствует BidirectionalIterator
(концепт) [править]
указывает диапазон, тип итератора которого соответствует RandomAccessIterator
(концепт) [править]
Доступ к диапазону
Определены в пространстве имён std::experimental::ranges
возвращает итератор на начало диапазона
(объект точки настройки) [править]
возвращает итератор на конец диапазона
(объект точки настройки) [править]
возвращает обратный итератор на диапазон
(объект точки настройки) [править]
возвращает обратный конечный итератор диапазона
(объект точки настройки) [править]
Примитивы диапазонов
Определены в пространстве имён std::experimental::ranges
получает размер диапазона, который может быть вычислен за постоянное время
(объект точки настройки) [править]
проверяет, пуст ли диапазон
(объект точки настройки) [править]
получает указатель на начало непрерывного диапазона
(объект точки настройки) [править]
получает типы итератора и ограничителя диапазона
(псевдоним шаблона) [править]

Алгоритмы

Определены в заголовочном файле <experimental/ranges/algorithm>
Немодифицирующие операции над последовательностями
Определены в пространстве имён std::experimental::ranges
проверяет, равен ли предикат true для всех, любого или ни одного из элементов в диапазоне
(шаблон функции) [править]
применяет функцию к диапазону элементов
(шаблон функции) [править]
возвращает количество элементов, соответствующих определённым критериям
(шаблон функции) [править]
находит первую позицию, в которой два диапазона различаются
(шаблон функции) [править]
определяет, являются ли два набора элементов одинаковыми
(шаблон функции) [править]
возвращает истину, если один диапазон лексикографически меньше другого
(шаблон функции) [править]
находит первый элемент, соответствующий определённым критериям
(шаблон функции) [править]
находит последнюю последовательность элементов в определённом диапазоне
(шаблон функции) [править]
ищет любой из набора элементов
(шаблон функции) [править]
находит первые два соседних элемента, которые равны (или соответствуют заданному предикату)
(шаблон функции) [править]
ищет диапазон элементов
(шаблон функции) [править]
ищет несколько последовательных копий элемента в диапазоне
(шаблон функции) [править]
Модифицирующие операции над последовательностями
Определены в пространстве имён std::experimental::ranges
копирует диапазон элементов в новое место
(шаблон функции) [править]
копирует ряд элементов в новое место
(шаблон функции) [править]
копирует диапазон элементов в обратном порядке
(шаблон функции) [править]
перемещает ряд элементов в новое место
(шаблон функции) [править]
перемещает диапазон элементов в новое место в обратном порядке
(шаблон функции) [править]
присваивает диапазону элементов определённое значение
(шаблон функции) [править]
присваивает значение ряду элементов
(шаблон функции) [править]
применяет функцию к диапазону элементов
(шаблон функции) [править]
сохраняет результат функции в диапазоне
(шаблон функции) [править]
сохраняет результат N применений функции
(шаблон функции) [править]
удаляет элементы, соответствующие определённым критериям
(шаблон функции) [править]
копирует диапазон элементов, исключая те, которые соответствуют определенным критериям
(шаблон функции) [править]
заменяет все значения, соответствующие определённым критериям, другим значением
(шаблон функции) [править]
копирует диапазон, заменяя элементы, соответствующие определённым критериям, другим значением
(шаблон функции) [править]
меняет местами два диапазона элементов
(шаблон функции) [править]
меняет порядок элементов в диапазоне
(шаблон функции) [править]
создает перевёрнутую копию диапазона
(шаблон функции) [править]
меняет порядок элементов в диапазоне
(шаблон функции) [править]
копирует и переворачивает диапазон элементов
(шаблон функции) [править]
случайным образом переупорядочивает элементы в диапазоне
(шаблон функции) [править]
удаляет последовательные повторяющиеся элементы в диапазоне
(шаблон функции) [править]
создаёт копию некоторого диапазона элементов, не содержащую последовательных дубликатов
(шаблон функции) [править]
Операции разметки
Определены в пространстве имён std::experimental::ranges
определяет, разделён ли диапазон заданным предикатом
(шаблон функции) [править]
делит диапазон элементов на две группы
(шаблон функции) [править]
копирует диапазон, разделяя элементы на две группы
(шаблон функции) [править]
делит элементы на две группы с сохранением их относительного порядка
(шаблон функции) [править]
находит точку раздела разделённого диапазона
(шаблон функции) [править]
Операции сортировки
Определены в пространстве имён std::experimental::ranges
проверяет, отсортирован ли диапазон по возрастанию
(шаблон функции) [править]
находит самый большой отсортированный поддиапазон
(шаблон функции) [править]
сортирует диапазон в порядке возрастания
(шаблон функции) [править]
сортирует первые N элементов диапазона
(шаблон функции) [править]
копирует и частично сортирует диапазон элементов
(шаблон функции) [править]
сортирует диапазон элементов, сохраняя порядок между равными элементами
(шаблон функции) [править]
частично сортирует заданный диапазон, убедившись, что он разделён заданным элементом
(шаблон функции) [править]
Операции двоичного поиска (по отсортированным диапазонам)
Определены в пространстве имён std::experimental::ranges
возвращает итератор на первый элемент не меньший, чем заданное значение
(шаблон функции) [править]
возвращает итератор на первый элемент, который больше определённого значения
(шаблон функции) [править]
определяет, существует ли элемент в определённом диапазоне
(шаблон функции) [править]
возвращает диапазон элементов, соответствующих определённому ключу
(шаблон функции) [править]
Операции с наборами (в отсортированных диапазонах)
Определены в пространстве имён std::experimental::ranges
объединяет два отсортированных диапазона
(шаблон функции) [править]
объединяет два упорядоченных диапазона на месте
(шаблон функции) [править]
возвращает true, если один набор является подмножеством другого
(шаблон функции) [править]
вычисляет разницу между двумя наборами
(шаблон функции) [править]
вычисляет пересечение двух множеств
(шаблон функции) [править]
вычисляет симметричную разницу между двумя наборами
(шаблон функции) [править]
вычисляет объединение двух наборов
(шаблон функции) [править]
Операции с кучей
Определены в пространстве имён std::experimental::ranges
проверяет, является ли данный диапазон максимальной кучей
(шаблон функции) [править]
находит самый большой поддиапазон, который составляет максимальную кучу
(шаблон функции) [править]
создаёт максимальную кучу из диапазона элементов
(шаблон функции) [править]
добавляет элемент в максимальную кучу
(шаблон функции) [править]
удаляет самый большой элемент из максимальной кучи
(шаблон функции) [править]
превращает максимальную кучу в диапазон элементов, отсортированных в порядке возрастания
(шаблон функции) [править]
Операции минимума/максимума
Определены в пространстве имён std::experimental::ranges
возвращает большее из заданных значений
(шаблон функции) [править]
возвращает самый большой элемент в диапазоне
(шаблон функции) [править]
возвращает меньшее из заданных значений
(шаблон функции) [править]
возвращает наименьший элемент в диапазоне
(шаблон функции) [править]
возвращает меньший и больший из двух элементов
(шаблон функции) [править]
возвращает самый маленький и самый большой элементы в диапазоне
(шаблон функции) [править]
Операции перестановки
Определены в пространстве имён std::experimental::ranges
определяет, является ли последовательность перестановкой другой последовательности
(шаблон функции) [править]
генерирует следующую большую лексикографическую перестановку диапазона элементов
(шаблон функции) [править]
генерирует следующую меньшую лексикографическую перестановку диапазона элементов
(шаблон функции) [править]