include algorithm c что это

Include algorithm c что это

Определяет функции шаблона контейнера стандартной библиотеки C++, которые выполняют алгоритмы.

Синтаксис

Комментарии

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

Алгоритмы стандартной библиотеки C++ расширяют действия, поддерживаемые операциями и функциями-членами каждого контейнера стандартной библиотеки C++, и позволяют работать, например, с различными типами объектов контейнера одновременно. Два суффикса использовалось, чтобы передавать сведения о назначении алгоритмов.

_if Суффикс указывает, что алгоритм используется с объектами функций, работающими над значениями элементов, а не с самими элементами. Алгоритм find_if выполняет поиск элементов, значения которых удовлетворяют критерию, заданному объектом функции, а алгоритм find ищет определенное значение.

Суффикс _copy означает, что этот алгоритм не только манипулирует значениями элементов, но также копирует измененные значения в диапазон назначения. Алгоритм reverse изменяет порядок элементов в диапазоне на обратный, а алгоритм reverse_copy также копирует результат в диапазон назначения.

Алгоритмы стандартной библиотеки C++ часто делятся на группы, указывающие какие-либо сведения об их целях или требованиях. Они включают как изменяющие алгоритмы (то есть алгоритмы, изменяющие значения элементов), так и неизменяющие. Изменяющие алгоритмы меняют порядок элементов, но не значения элементов. Удаляющие алгоритмы могут исключать элементы из диапазона или копии диапазона. Алгоритмы сортировки изменяют порядок элементов в диапазоне различными способами и упорядоченные алгоритмы диапазона действуют только для диапазонов, элементы которых были отсортированы определенным образом.

Источник

Алгоритмы в Стандартной библиотеке С++

Обновл. 15 Сен 2021 |

На этом уроке мы рассмотрим использование алгоритмов из Стандартной библиотеки С++.

Библиотека алгоритмов

Новички обычно тратят довольно много времени на написание пользовательских циклов для выполнения относительно простых задач, таких как: сортировка, поиск или подсчет элементов массивов. Эти циклы могут стать проблематичными как с точки зрения того, насколько легко в них можно сделать ошибку, так и с точки зрения общей надежности и удобства использования, т.к. данные циклы могут быть трудны для понимания.

Поскольку поиск, подсчет и сортировка являются очень распространенными операциями в программировании, то в состав Стандартной библиотеки C++ изначально уже включен большой набор функций, которые выполняют данные задачи всего в несколько строчек кода. В дополнение к этому, эти функции уже предварительно протестированные, эффективные и имеют поддержку множества различных типов контейнеров. А некоторые из этих функций поддерживают и распараллеливание — возможность выделять несколько потоков ЦП для одной и той же задачи, чтобы выполнить её быстрее.

Функционал, предоставляемый библиотекой алгоритмов, обычно относится к одной из трех категорий:

Инспекторы — используются для просмотра (без изменений) данных в контейнере (например, операции поиска или подсчета элементов).

Мутаторы — используются для изменения данных в контейнере (например, операции сортировки или перестановки элементов).

Фасилитаторы — используются для генерации результата на основе значений элементов данных (например, объекты, которые умножают значения, либо объекты, которые определяют, в каком порядке пары элементов должны быть отсортированы).

Данные алгоритмы расположены в библиотеке алгоритмов (заголовочный файл algorithm). На этом уроке мы рассмотрим некоторые из наиболее распространенных алгоритмов.

Примечание: Все эти алгоритмы используют итераторы.

Алгоритм std::find() и поиск элемента по значению

Функция std::find() выполняет поиск первого вхождения заданного значения в контейнере. В качестве аргументов std::find() принимает 3 параметра:

итератор для начального элемента в последовательности;

итератор для конечного элемента в последовательности;

значение для поиска.

В результате будет возвращен итератор, указывающий на элемент с искомым значением (если он найден) или конец контейнера (если такой элемент не найден). Например:

Источник

Алгоритмы. STL (часть 10)

Контейнеры STL представляли бы собой красивую выдумку достаточно далёкую от практического использования (как и было в первые годы существования STL), если бы не следующее обстоятельство: из-за единой общей природы всех контейнеров основные алгоритмы, представляющие интерес на практике, могут быть реализованы в обобщённом виде, применимом к любым типам контейнеров.

Алгоритмы — это самая объёмная и самая востребованная часть библиотеки. Предоставляется настолько много алгоритмов, что для детального описания их всех не хватит и объёмной книги. Ниже мы совершенно условно поделим их на группы и назовём по именам (и тоже далеко не все), и только по некоторым построим примеры использования.

for_each() Наиболее часто используемый алгоритм — это for_each() : выполнение действия для группы элементов (возможно всех) контейнера. Ниже показано несколько примеров работы алгоритма for_each() для массива и вектора, точно также этот алгоритм может использоваться с любым контейнером STL:

Примечание: Строкой 3 показана работа новой (введена стандартом C++11) конструкции for( auto &x : …), которая имеет подобный эффект присвоения и может применяться и к массивам и к контейнерам (в функции-операторе вывода вектора в поток показан такой вариант). Эта конструкция, вообще то говоря, не является составной частью библиотеки STL или алгоритмов, но имеет тот же эффект, что и алгоритм for_each(): применить последовательно ко всем элементам коллекции.

Этот пример показывает основную логику организации всех алгоритмов: к указанному диапазону (не обязательно ко всей коллекции), ограниченному итератором начала и конца (зачастую указываемых первыми 2-мя параметрами) применяется поочерёдно функция, функтор, или предикат (функция, возвращающая логиxческий результат, позволяющий произвести отбор по какому-либо признаку).

При таком обилии реализованных алгоритмов и число которых в библиотеке со временем возрастает, и при том, что большинство из них вообще толком нигде не описаны в литературе, возникает естественный вопрос: как разобраться во всём этом разнообразии? Эти сложности снимаются тем что:

Все объекты STL (контейнеры, алгоритмы) описаны в синтаксисе шаблонов ( template ). Поэтому их описания обязательно должны включаться в компилируемый код в составе своих заголовочных файлов (хедер-файлов).

Отправляйтесь в стандартный каталог и найдите там хедер-файлы файлы вида stl_algo* — в них вы найдёте все прототипы функций алгоритмов. Более того, там же каждому прототипу предшествует обстоятельный комментарий, объясняющий назначение алгоритма, и объясняющий параметры вызова.

Рассмотрите примеры кода, использующие несколько основных алгоритмов STL — в сети их множество. По аналогии элементарно просто воспроизвести поведение и всех остальных алгоритмов.

Как и было сказано выше, изучение примеров снимет множество вопросов, а поэтому приступим к коду … Теперь внимательно следите за руками (алгоритмов STL такое множество, что комментировать каждый – за пределами разумного объёма изложения, но все они работают подобно один другому):

Источник

Algorithms library

Compiler support
Freestanding and hosted
Language
Standard library headers
Named requirements
Feature test macros (C++20)
Language support library
Concepts library (C++20)
Diagnostics library
General utilities library
Strings library
Containers library
Iterators library
Ranges library (C++20)
Algorithms library
Numerics library
Localizations library
Input/output library
Filesystem library (C++17)
Regular expressions library (C++11)
Atomic operations library (C++11)
Thread support library (C++11)
Technical specifications
Symbols index
External libraries

The algorithms library defines functions for a variety of purposes (e.g. searching, sorting, counting, manipulating) that operate on ranges of elements. Note that a range is defined as [first, last) where last refers to the element past the last element to inspect or modify.

Contents

Constrained algorithms
Execution policies

Most algorithms have overloads that accept execution policies. The standard library algorithms support several execution policies, and the library provides corresponding execution policy types and objects. Users may select an execution policy statically by invoking a parallel algorithm with an execution policy object of the corresponding type.

Standard library implementations (but not the users) may define additional execution policies as an extension. The semantics of parallel algorithms invoked with an execution policy object of implementation-defined type is implementation-defined.

Источник

Функции

adjacent_find

Поиск двух соседних элементов, которые либо равны, либо удовлетворяют указанному условию.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, адресующий положение первого элемента в диапазоне для поиска.

last
Прямой итератор, адресующий положение на единицу после последнего элемента в диапазоне для поиска.

pred
Двоичный предикат, задающий условие, которому должны удовлетворять значения соседних элементов в диапазоне, по которому выполняется поиск.

Возвращаемое значение

Комментарии

Алгоритм adjacent_find не изменяет последовательность. Диапазон, по которому ведется поиск, должен быть допустимым; все указатели должны поддерживать сброс ссылок должна быть возможность достижения последнего положения с первого путем приращения. Временная сложность алгоритма линейно зависит от количества элементов в диапазоне.

Пример

all_of

Параметры

exec
Используемая политика выполнения.

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

last
Входной итератор, указывающий конец диапазона элементов для проверки условия.

Возвращаемое значение

Комментарии

Пример

any_of

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, указывающий, откуда должна начинаться проверка диапазона элементов на соответствие условию.

last
Входной итератор, указывающий конец диапазона элементов для проверки условия.

Возвращаемое значение

Комментарии

Пример

binary_search

Проверяет, есть ли в отсортированном диапазоне элемент, равный указанному значению или эквивалентный ему в смысле, заданном двоичным предикатом.

Параметры

first
Прямой итератор, адресующий положение первого элемента в диапазоне для поиска.

last
Прямой итератор, адресующий положение на единицу после последнего элемента в диапазоне для поиска.

value
Значение должно соответствовать значению элемента или удовлетворять условию со значением элемента, заданному двоичным предикатом.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Возвращаемое значение

Комментарии

Упорядоченный исходный диапазон, на который указывает ссылка, должен быть допустим. Все указатели должны поддерживать отмену ссылок. В последовательности должна иметься возможность достижения последней позиции с первой путем приращения.

Предварительное условие для применения алгоритма binary_search состоит в том, что каждый упорядоченный диапазон должен быть упорядочен в соответствии с теми же правилами, которые будут использоваться этим алгоритмом для сортировки объединенных диапазонов.

Алгоритм binary_search не изменяет исходные диапазоны.

В целях упорядочения типы значений прямых итераторов должны подлежать сравнению «меньше чем», чтобы при наличии двух элементов можно было определить, что они равны (т. е. ни один не меньше другого) или что один меньше другого. Это приводит к упорядочению неравнозначных элементов.

Пример

clamp

Сравнивает значение с верхней и нижней границей и возвращает ссылку на значение, если оно находится между границами, или ссылку на верхнюю или нижнюю границу, если значение выше или ниже, соответственно.

Параметры

Возвращаемое значение

Комментарии

Присваивает значения элементов из исходного диапазона диапазону назначения, выполняя итерации в исходной последовательности элементов и присваивая им новые позиции в прямом направлении.

Параметры

exec
Используемая политика выполнения.

first
Итератор ввода, обращающийся к позиции первого элемента в исходном диапазоне.

last
Итератор ввода, обращающийся к позиции, которая на единицу превышает позицию завершающего элемента в исходном диапазоне.

destBeg
Итератор вывода указывает на позицию первого элемента в диапазоне назначения.

Возвращаемое значение

Комментарии

Диапазон источника должен быть допустимым, а в месте назначения должно быть достаточно свободного пространства для всех скопированных элементов.

Так как алгоритм копирует исходные элементы по порядку, начиная с первого элемента, диапазон назначения может перекрывать исходный диапазон, если позиция last исходного диапазона не содержится в диапазоне назначения. copy можно использовать для сдвига элементов влево, но не справа, если между исходным и целевым диапазонами нет перекрытия. Для сдвига вправо любого числа позиций используйте copy_backward алгоритм.

Алгоритм copy изменяет только значения, на которые указывают итераторы, задавая новые значения элементам в диапазоне назначения. Его нельзя использовать для создания новых элементов и для вставки элементов напрямую в пустой контейнер.

Пример

copy_backward

Присваивает значения элементов из исходного диапазона диапазону назначения, выполняя итерации в исходной последовательности элементов и присваивая им новые позиции в обратном направлении.

Параметры

first
Двунаправленный итератор, обращающийся к положению первого элемента в исходном диапазоне.

last
Двунаправленный итератор, обращающийся к позиции, которая на единицу превышает позицию завершающего элемента в исходном диапазоне.

destEnd
Двунаправленный итератор, обращающийся к позиции, которая на единицу превышает позицию завершающего элемента в диапазоне назначения.

Возвращаемое значение

Комментарии

Диапазон источника должен быть допустимым, а в месте назначения должно быть достаточно свободного пространства для всех скопированных элементов.

copy_backward Алгоритм накладывает более строгие требования, чем copy алгоритм. Его итераторы ввода и вывода должны быть двунаправленными.

copy_backward move_backward Алгоритмы и являются единственными алгоритмами стандартной библиотеки C++, которые обозначают выходной диапазон итератором, указывающим на конец диапазона назначения.

Поскольку алгоритм копирует исходные элементы в порядке, начиная с последнего элемента, диапазон назначения может пересекаться с исходным диапазоном, в котором first не содержится место исходного диапазона. copy_backward можно использовать для сдвигания элементов вправо, но не влево, кроме случаев, когда исходный диапазон и диапазон назначения перекрывают друг друга. Чтобы сдвинуть значение влево на любое число позиций, используйте copy алгоритм.

Алгоритм copy_backward изменяет только значения, на которые указывают итераторы, задавая новые значения элементам в диапазоне назначения. Его нельзя использовать для создания новых элементов и для вставки элементов напрямую в пустой контейнер.

Пример

copy_if

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, указывающий начало диапазона для проверки условия.

last
Входной итератор, указывающий конец диапазона.

dest
Выходной итератор, указывающий место назначения для скопированных элементов.

Возвращаемое значение

Выходной итератор, который увеличивает dest на единицу после каждого элемента, удовлетворяющего условию. Другими словами, возвращаемое значение минус dest равно количеству скопированных элементов.

Комментарии

Функция шаблона проверяет

if (pred(*first + N)) * dest++ = *(first + N))

Пример

copy_n

Копирует указанное количество элементов.

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, указывающий, откуда копировать элементы.

count
Целое число со знаком или без знака, указывающее количество копируемых элементов.

dest
Выходной итератор, указывающий, куда копировать элементы.

Возвращаемое значение

Возвращает выходной итератор, куда были скопированы элементы. Он совпадает с возвращаемым значением dest параметра.

Комментарии

Пример

count

Возвращает количество элементов в диапазоне, значения которых соответствуют заданному значению.

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, адресующий положение первого элемента в диапазоне для прохода.

last
Входной итератор, указывающий позицию, следующую за последним элементом в диапазоне для прохода.

value
Значение элементов для подсчета.

Возвращаемое значение

Комментарии

Пример

count_if

Возвращает количество элементов в диапазоне, значения которых соответствуют заданному условию.

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, адресующий положение первого элемента в диапазоне для поиска.

last
Входной итератор, адресующий положение на единицу после последнего элемента в диапазоне для поиска.

Возвращаемое значение

Количество элементов, которые удовлетворяют условию, заданному предикатом.

Комментарии

Пример

equal

Сравнивает два диапазона поэлементно на признак равенства или равноценности в смысле, заданном бинарным предикатом.

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

Параметры

exec
Используемая политика выполнения.

first1
Входной итератор, указывающий на положение первого элемента в первом диапазоне для тестирования.

last1
Входной итератор, указывающий на положение, следующее за последним элементом, в первом диапазоне для тестирования.

first2
Входной итератор, указывающий на положение первого элемента во втором диапазоне для тестирования.

last2
Входной итератор, указывающий на положение, следующее за последним элементом, во втором диапазоне для тестирования.

pred
Заданный пользователем объект функции предиката, определяющий условие, которое должно выполняться, чтобы два элемента считались эквивалентными друг другу. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Возвращаемое значение

Комментарии

Диапазон, по которому ведется поиск, должен быть допустимым. Все итераторы должны поддерживать сброс ссылок и должна быть возможность достижения последнего положения, начиная от первого, путем приращения.

Ни один, operator== ни определенный пользователем предикат не требуется для наложения отношения эквивалентности на симметричное, гибкое и транзитивное между операндами.

Пример

equal_range

Принимая во внимание упорядоченный диапазон, находит поддиапазон, в котором все элементы эквивалентны заданному значению.

Параметры

first
Прямой итератор, адресующий положение первого элемента в диапазоне для поиска.

last
Прямой итератор, адресующий положение на единицу после последнего элемента в диапазоне для поиска.

value
Значение для поиска в упорядоченном диапазоне.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Предикат сравнения принимает два аргумента и возвращает, true когда удовлетворены и false не удовлетворены.

Возвращаемое значение

Пара прямых итераторов, задающих поддиапазон в искомом диапазоне, в котором все элементы эквивалентны value в смысле, заданном используемым двоичным предикатом ( pred или по умолчанию «меньше чем»).

Комментарии

Элементы в возможно пустом поддиапазоне, определенном парой итераторов, возвращаемых, equal_range будут эквивалентны equal_range в смысле, определенном используемым предикатом.

Пример

Присваивает одно и то же новое значение каждому элементу в заданном диапазоне.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий на позицию первого элемента в диапазоне для прохода.

last
Прямой итератор, указывающий на позицию, следующую за последним элементом в диапазоне для прохода.

Комментарии

Целевой диапазон должен быть допустимым; все указатели должны поддерживать сброс ссылок; должна быть возможность достижения последнего положения с первого путем приращения. Сложность линейная по отношению к размеру диапазона.

Пример

fill_n

Назначает новое значение указанному количеству элементов в диапазоне, начиная с определенного элемента.

Параметры

exec
Используемая политика выполнения.

count
Целое число со знаком или без знака, указывающее количество элементов, которым следует назначить значение.

Возвращаемое значение

Комментарии

Целевой диапазон должен быть допустимым; все указатели должны поддерживать сброс ссылок; должна быть возможность достижения последнего положения с первого путем приращения. Сложность линейная по отношению к размеру диапазона.

Пример

Находит позицию первого вхождения элемента с заданным значением в диапазон.

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, адресующий положение первого элемента в диапазоне для поиска заданного значения.

last
Входной итератор, адресующий положение после последнего элемента в диапазоне для поиска заданного значения.

value
Значение, которое нужно найти.

Возвращаемое значение

Комментарии

find_end

Ищет в диапазоне последнюю подпоследовательность, совпадающую с заданной последовательностью, или эквивалентной согласно условию, заданному двоичным предикатом.

Параметры

first1
Прямой итератор, адресующий положение первого элемента в диапазоне для поиска.

last1
Прямой итератор, указывающий на положение, следующее за последним элементом в диапазоне для поиска.

first2
Прямой итератор, указывающий на положение первого элемента в диапазоне для поиска.

last2
Прямой итератор, указывающий на положение, следующее за последним элементом в диапазоне для поиска.

pred
Заданный пользователем объект функции предиката, определяющий условие, которое должно выполняться, чтобы два элемента считались эквивалентными друг другу. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Возвращаемое значение

Прямой итератор, обращающийся к положению первого элемента последней вложенной последовательности в [first1, last1), соответствующей указанной последовательности [first2, last2).

Комментарии

Диапазоны, на которые указывают ссылки, должны быть допустимыми; все указатели должны поддерживать сброс ссылок; в каждой последовательности должна быть возможность достижения последнего положения с первого путем приращения.

Пример

find_first_of

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

Параметры

first1
Прямой итератор, адресующий положение первого элемента в диапазоне для поиска.

last1
Прямой итератор, адресующий положение на единицу после последнего элемента в диапазоне для поиска.

first2
Прямой итератор, адресующий положение первого элемента в диапазоне для сравнения.

last2
Прямой итератор, адресующий положение на единицу после последнего элемента в диапазоне для сравнения.

pred
Заданный пользователем объект функции предиката, определяющий условие, которое должно выполняться, чтобы два элемента считались эквивалентными друг другу. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Возвращаемое значение

Прямой итератор, адресующий положение первого элемента первой последовательности, совпадающей с определенной последовательностью или эквивалентной согласно условию, заданному двоичным предикатом.

Комментарии

Диапазоны, на которые указывают ссылки, должны быть допустимыми; все указатели должны поддерживать сброс ссылок; в каждой последовательности должна быть возможность достижения последнего положения с первого путем приращения.

Пример

find_if

Находит позицию первого вхождения элемента, удовлетворяющего определенному условию, в диапазон.

Параметры

first
Входной итератор, адресующий положение первого элемента в диапазоне для поиска.

last
Входной итератор, адресующий положение на единицу после последнего элемента в диапазоне для поиска.

Возвращаемое значение

Комментарии

Пример

find_if_not

Возвращает первый элемент, который не удовлетворяет условию, в указанном диапазоне.

Параметры

first
Входной итератор, адресующий положение первого элемента в диапазоне для поиска.

last
Входной итератор, адресующий положение на единицу после последнего элемента в диапазоне для поиска.

Возвращаемое значение

Комментарии

for_each

Применяет заданный объект функции к каждому элементу в прямом порядке в пределах диапазона и возвращает объект функции.

Параметры

first
Итератор ввода содержит позицию первого элемента из нужного диапазона.

last
Итератор ввода содержит положение элемента, стоящего за последним рассматриваемым элементом в нужном диапазоне.

func
Определенный пользователем объект функции, который применяется к каждому элементу в диапазоне.

Возвращаемое значение

Копия объекта функции после того, как он будет применён ко всем элементам в диапазоне.

Комментарии

Алгоритм for_each весьма гибок, что позволяет изменять каждый элемент в пределах диапазона разными способами, определенными пользователем. Шаблонизируемые функции могут использоваться многократно в измененной форме путем передачи разных параметров. Определяемые пользователем функции могут накапливать сведения во внутреннем состоянии, которое может возвращать алгоритм после обработки всех элементов в диапазоне.

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Пример

for_each_n

generate

Присваивает значения, создаваемые объектом функции, каждому элементу в диапазоне.

Параметры

first
Прямой итератор, указывающий позицию первого элемента в диапазоне, которому назначаются значения.

last
Прямой итератор, указывающий позицию, следующую за последним элементом в диапазоне, которому назначаются значения.

gen
Объект функции, который вызывается без аргументов и используется для формирования значений, которые необходимо назначить каждому из элементов в диапазоне.

Комментарии

Этот объект функции вызывается для всех элементов в диапазоне; он необязательно должен возвращать одинаковое значение при вызове. Например, он может читать данные из файла или ссылаться на локальное состояние и изменять его. Тип результата должен поддерживать преобразование в тип значения прямых итераторов диапазона.

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Пример

generate_n

Присваивает значения, создаваемые объектом функции, указанному количеству элементов в диапазоне и возвращается на позицию, следующую за последним присвоенным значением.

Параметры

exec
Используемая политика выполнения.

first
Выходной итератор, обращающийся к позиции первого элемента в диапазоне, которому назначаются значения.

count
Целочисленный тип со знаком или без знака, указывающий количество элементов, которым функция генератора назначит значение.

gen
Объект функции, который вызывается без аргументов и используется для формирования значений, которые необходимо назначить каждому из элементов в диапазоне.

Комментарии

Этот объект функции вызывается для всех элементов в диапазоне; он необязательно должен возвращать одинаковое значение при вызове. Например, он может читать данные из файла или ссылаться на локальное состояние и изменять его. Тип результата должен поддерживать преобразование в тип значения прямых итераторов диапазона.

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Отношение сложности линейное, требуется ровно count вызовов генератора.

Пример

includes

Проверяет, содержит ли один отсортированный диапазон все элементы, содержащиеся во втором отсортированном диапазоне, где порядок сортировки или критерий эквивалентности элементов можно задать бинарным предикатом.

Параметры

exec
Используемая политика выполнения.

first1
Входной итератор, указывающий позицию первого элемента в первом из двух упорядоченных исходных диапазонов, которые должны проверяться на наличие в первом диапазоне всех элементов из второго диапазона.

last1
Входной итератор, указывающий позицию, следующую за последним элементом в первом из двух упорядоченных исходных диапазонов, которые должны проверяться на наличие в первом диапазоне всех элементов из второго диапазона.

first2
Входной итератор, указывающий позицию первого элемента во втором из двух последовательных упорядоченных исходных диапазонов, которые должны проверяться на наличие в первом диапазоне всех элементов из второго диапазона.

last2
Входной итератор, указывающий позицию, следующую за последним элементом во втором из двух последовательных упорядоченных исходных диапазонов, которые должны проверяться на наличие в первом диапазоне всех элементов из второго диапазона.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Предикат сравнения принимает два аргумента и возвращает, true когда удовлетворены и false не удовлетворены.

Возвращаемое значение

Комментарии

Можно также представить себе этот тест как проверку, является ли второй исходный диапазон подмножеством первого исходного диапазона.

Упорядоченные исходные диапазоны, на которые указывают ссылки, должны быть допустимыми. Все указатели должны поддерживать отмену ссылок. В каждой последовательности должна быть возможность достижения последней позиции с первой путем приращения.

Предварительное условие для применения алгоритма includes состоит в том, что каждый упорядоченный диапазон должен быть упорядочен в соответствии с теми же правилами, которые будут использоваться этим алгоритмом для сортировки объединенных диапазонов.

В целях упорядочения типы значений входных итераторов должны подлежать сравнению «меньше чем» для установления такого порядка, чтобы, имея два элемента, можно было определить, что они равны (ни один не меньше другого) или что один меньше другого. Это приводит к упорядочению неравнозначных элементов. Точнее, алгоритм проверяет, все ли элементы в первом упорядоченном диапазоне под указанным двоичным предикатом имеют порядок, эквивалентный порядку элементов во втором упорядоченном диапазоне.

Пример

inplace_merge

Объединяет элементы из двух последовательных упорядоченных диапазонов в один упорядоченный диапазон, где критерий порядка сортировки может быть указан бинарным предикатом.

Параметры

exec
Используемая политика выполнения.

first
Двунаправленный итератор, указывающий позицию первого элемента в первом из двух последовательных упорядоченных диапазонов, которые следует объединить и упорядочить в один диапазон.

middle
Двунаправленный итератор, указывающий позицию первого элемента во втором из двух последовательных упорядоченных диапазонов, которые следует объединить и упорядочить в один диапазон.

last
Двунаправленный итератор, указывающий позицию, следующую за последним элементом во втором из двух последовательных упорядоченных диапазонов, которые следует объединить и упорядочить в один диапазон.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Предикат сравнения принимает два аргумента и должен возвращать, true Если первый элемент меньше второго элемента, и false в противном случае.

Комментарии

Упорядоченные последовательные диапазоны, на которые указывают ссылки, должны быть допустимыми. Все указатели должны поддерживать отмену ссылок. В каждой последовательности должна быть возможность достижения последней позиции с первой путем приращения.

Предварительное условие для применения алгоритма inplace_merge состоит в том, что каждый упорядоченный последовательный диапазон должен быть упорядочен в соответствии с теми же правилами, которые будут использоваться этим алгоритмом для сортировки объединенных диапазонов. Операция стабильна, так как сохраняется относительный порядок элементов в каждом диапазоне. Если эквивалентные элементы имеются в обоих исходных диапазонах, в объединенном диапазоне элемент из первого диапазона будет предшествовать элементу из второго диапазона.

Пример

is_heap

Параметры

exec
Используемая политика выполнения.

first
Итератор произвольного доступа, указывающий начало диапазона для проверки кучи.

last
Итератор произвольного доступа, указывающий конец диапазона.

Возвращаемое значение

Комментарии

Вторая функция шаблона возвращает

is_heap_until

Параметры

exec
Используемая политика выполнения.

first
Итератор произвольного доступа, который задает первый элемент диапазона для проверки кучи.

last
Итератор произвольного доступа, который задает конец диапазона для проверки кучи.

pred
Двухместный предикат, который задает условие строгого слабого упорядочения, определяющее кучу. Предикат по умолчанию имеет значение, std::less<> Если pred не задано значение.

Возвращаемое значение

Комментарии

is_partitioned

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, указывающий, где начинается диапазон для проверки условия.

last
Входной итератор, указывающий конец диапазона.

Возвращаемое значение

Комментарии

is_permutation

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

Параметры

first1
Прямой итератор, указывающий на первый элемент диапазона.

last1
Прямой итератор, указывающий на место, следующее за последним элементом диапазона.

first2
Прямой итератор, указывающий на первый элемент второго диапазона, используемый для сравнения.

last2
Прямой итератор, указывающий на место, следующее за последним элементом второго диапазона, используемым для сравнения.

Возвращаемое значение

Комментарии

is_permutation в худшем случае имеет квадратичную сложность.

Пример

is_sorted

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий, где начинается диапазон для проверки.

last
Прямой итератор, указывающий конец диапазона.

Комментарии

is_sorted_until

Вторая версия позволяет предоставить объект функции сравнения, возвращающий, true когда два заданных элемента находятся в отсортированном порядке, и false в противном случае.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий, где начинается диапазон для проверки.

last
Прямой итератор, указывающий конец диапазона.

Возвращаемое значение

Комментарии

iter_swap

Меняет местами два значения, указанные парой определенных итераторов.

Параметры

left
Один из прямых итераторов, значение которого должно быть изменено.

right
Второй из прямых итераторов, значение которого должно быть изменено.

Комментарии

Типы значений входных прямых итераторов должны иметь одно и то же значение.

Пример

lexicographical_compare

Сравнивает две последовательности поэлементно для определения того, какой элемент из двух меньше.

Параметры

exec
Используемая политика выполнения.

first1
Входной итератор, указывающий на положение первого элемента в первом диапазоне для сравнения.

last1
Входной итератор, указывающий на положение, следующее за последним элементом в первом диапазоне для сравнения.

first2
Входной итератор, указывающий на положение первого элемента во втором диапазоне для сравнения.

last2
Входной итератор, указывающий на положение, следующее за последним элементом во втором диапазоне для сравнения.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Предикат сравнения принимает два аргумента и возвращает, true когда удовлетворены и false не удовлетворены.

Возвращаемое значение

Комментарии

При лексикографическом сравнении двух последовательностей они сравниваются поэлементно до тех пор, пока не произойдет следующее.

Находит 2 неравных соответствующих элемента и результат их сравнения считается результатом сравнения между двумя последовательностями.

Неравенства не найдены, но одна последовательность имеет больше элементов, чем другая, и более короткая последовательность считается меньше, чем более длинная последовательность.

Пример

lower_bound

Находит позицию первого элемента в упорядоченном диапазоне, значение которого больше или равно указанному значению, где критерий упорядочивания может быть задан бинарным предикатом.

Параметры

first
Прямой итератор, адресующий положение первого элемента в диапазоне для поиска.

last
Прямой итератор, адресующий положение на единицу после последнего элемента в диапазоне для поиска.

value
Значение, чья первая позиция или возможная первая позиция ищется в упорядоченном диапазоне.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Возвращаемое значение

Однонаправленный итератор в позиции первого элемента в упорядоченном диапазоне, который имеет значение большее или эквивалентное указанному значению, где эквивалентность задана двоичным предикатом.

Комментарии

Упорядоченный исходный диапазон, на который указывает ссылка, должен быть допустим. Все итераторы должны поддерживать отмену ссылок. В последовательности должна быть возможность достижения последней позиции с первой путем приращения.

Предварительным условием для использования lower_bound является упорядоченный диапазон, порядок в котором тот же, что и заданный двоичным предикатом.

В целях упорядочения типы значений прямых итераторов должны подлежать сравнению «меньше чем», чтобы при наличии двух элементов можно было определить, что они равны (т. е. ни один не меньше другого) или что один меньше другого. Это приводит к упорядочению неравнозначных элементов.

Пример

make_heap

Преобразует элементы из указанного диапазона в кучу, в которой первый элемент является наибольшим и для которой критерий сортировки может быть определен бинарным предикатом.

Параметры

first
Итератор произвольного доступа, обращающийся к позиции первого элемента в диапазоне, подлежащем преобразованию в кучу.

last
Итератор произвольного доступа, обращающийся к позиции, следующей за последним элементом в диапазоне, подлежащем преобразованию в кучу.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Комментарии

Кучи имеют два следующих свойства.

Первый элемент — всегда наибольший.

Элементы могут добавляться и удаляться в логарифмическое время.

Кучи — идеальный способ реализации очередей с приоритетами, и они используются в классе priority_queue адаптеров контейнеров библиотеки стандартных программ C++.

Пример

Сравнивает два объекта и возвращает больший из них, где критерий упорядочивания может быть указан бинарным предикатом.

Параметры

left
Первый из сравниваемых объектов.

right
Второй из сравниваемых объектов.

pred
Двоичный предикат, используемый для сравнения двух объектов.

inlist
Список initializer с объектами, которые необходимо сравнить.

Возвращаемое значение

Больший из двух объектов, если ни один из них не больше — в этом случае возвращается первый из двух объектов. В случае initializer_list возвращается наибольшее из объектов в списке.

Комментарии

Пример

max_element

Находит первое вхождение наибольшего элемента в указанном диапазоне, где критерий упорядочивания может быть указан бинарным предикатом.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий положение первого элемента в диапазоне для поиска наибольшего элемента.

last
Прямой итератор, указывающий положение, следующее за последним элементом в диапазоне для поиска наибольшего элемента.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Предикат сравнения принимает два аргумента и должен возвращать, true Если первый элемент меньше второго элемента, и false в противном случае.

Возвращаемое значение

Прямой итератор, указывающий положение первого вхождения наибольшего элемента в диапазоне для поиска.

Комментарии

Диапазоны, на которые указывают ссылки, должны быть допустимыми; все указатели должны поддерживать сброс ссылок; в каждой последовательности должна быть возможность достижения последнего положения с первого путем приращения.

Пример

merge

Объединяет все элементы из двух исходных упорядоченных диапазонов в один упорядоченный диапазон назначения, где критерий порядка сортировки может быть указан бинарным предикатом.

Параметры

exec
Используемая политика выполнения.

first1
Входной итератор, обращающийся к позиции первого элемента в первом из двух упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон.

last1
Входной итератор, обращающийся к позиции, следующей за последним элементом в первом из двух упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон.

first2
Входной итератор, обращающийся к позиции первого элемента во втором из двух последовательных упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон.

last2
Входной итератор, обращающийся к позиции, следующей за последним элементом во втором из двух последовательных упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон.

result
Выходной итератор, обращающийся к позиции первого элемента в диапазоне назначения, где два исходных диапазона следует объединить в один диапазон.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Предикат сравнения принимает два аргумента и должен возвращать, true Если первый элемент меньше второго элемента, и false в противном случае.

Возвращаемое значение

Выходной итератор, указывающий на позицию, следующую за последним элементом, в упорядоченном диапазоне назначения.

Комментарии

Упорядоченные исходные диапазоны, на которые указывают ссылки, должны быть допустимыми. Все указатели должны поддерживать отмену ссылок. В каждой последовательности должна быть возможность достижения последней позиции с первой путем приращения.

Диапазон назначения не должен перекрывать исходные диапазоны и должен быть достаточно большим, чтобы содержать диапазон назначения.

Каждый упорядоченный исходный диапазон должны быть упорядочен в качестве предусловия для применения алгоритма merge в соответствии с теми же правилами, чтобы использоваться алгоритмом для упорядочения объединенных диапазонов.

В целях упорядочения типы значений входных итераторов должны подлежать сравнению «меньше чем» для установления такого порядка, чтобы, имея два элемента, можно было определить, что они равны (ни один не меньше другого) или что один меньше другого. Это приводит к упорядочению неравнозначных элементов. Если эквивалентные элементы имеются в обоих исходных диапазонах, в диапазоне назначения элементы из первого диапазона будут предшествовать элементам из второго исходного диапазона.

Класс предоставляет функцию-член merge для слияния элементов двух списков.

Пример

Сравнивает два объекта и возвращает меньший из них, где критерий упорядочивания может быть указан бинарным предикатом.

Параметры

left
Первый из сравниваемых объектов.

right
Второй из сравниваемых объектов.

pred
Двоичный предикат, используемый для сравнения двух объектов.

Возвращаемое значение

Меньший из двух объектов; если ни один из них не меньше, то возвращается первый из двух объектов. В случае с initializer_list функция возвращает наименьшее из объектов в списке.

Комментарии

Пример

min_element

Находит первое вхождение наименьшего элемента в указанном диапазоне, где критерий упорядочивания может быть указан бинарным предикатом.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий положение первого элемента в диапазоне для поиска наименьшего элемента.

last
Прямой итератор, указывающий положение, следующее за последним элементом в диапазоне для поиска наименьшего элемента.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Предикат сравнения принимает два аргумента и должен возвращать, true Если первый элемент меньше второго элемента, и false в противном случае.

Возвращаемое значение

Прямой итератор, указывающий положение первого вхождения наименьшего элемента в диапазоне для поиска.

Комментарии

Диапазоны, на которые указывают ссылки, должны быть допустимыми; все указатели должны поддерживать сброс ссылок; в каждой последовательности должна быть возможность достижения последнего положения с первого путем приращения.

Пример

minmax_element

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий начало диапазона.

last
Прямой итератор, указывающий конец диапазона.

pred
Определяемый пользователем объект функции предиката, определяющий, в котором один элемент меньше другого. Предикат сравнения принимает два аргумента и должен возвращать, true Если первый меньше второго, и false иным образом.

Возвращаемое значение

Комментарии

Первая функция шаблона возвращает

minmax

Сравнивает два входных параметра и возвращает их в виде пары, в порядке от меньшего к большему.

Параметры

left
Первый из сравниваемых объектов.

right
Второй из сравниваемых объектов.

pred
Двоичный предикат, используемый для сравнения двух объектов.

Комментарии

Функция выполняет точно одно сравнение.

mismatch

Сравнивает поэлементно два диапазона и находит первую позицию, где элементы отличаются.

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

Параметры

exec
Используемая политика выполнения.

first1
Входной итератор, указывающий на положение первого элемента в первом диапазоне для тестирования.

last1
Входной итератор, указывающий на положение, следующее за последним элементом, в первом диапазоне для тестирования.

first2
Входной итератор, указывающий на положение первого элемента во втором диапазоне для тестирования.

last2
Входной итератор, указывающий на положение, следующее за последним элементом, во втором диапазоне для тестирования.

Возвращаемое значение

Пара итераторов, указывающих на положения несовпадений в двух диапазонах: первый компонентный итератор — на положение в первом диапазоне, второй итератор — на положение во втором диапазоне. Если между элементами сравниваемых диапазонов нет разницы или если бинарный предикат во второй версии показывает соответствие для всех пар элементов из двух диапазонов, то первый компонентный итератор указывает на положение, следующее за последним проверенным элементом в первом диапазоне, а второй итератор — на положение, следующее за последним проверенным элементом во втором диапазоне.

Комментарии

При выполнении первой функции шаблона предполагается, что в диапазоне, начинающемся с first2, имеется столько же элементов, сколько в диапазоне, указанном аргументами [first1, last1). Если второй диапазон больше, они игнорируются; Если они меньше, то это приведет к неопределенному поведению.

Диапазон, по которому ведется поиск, должен быть допустимым. Все итераторы должны поддерживать сброс ссылок и должна быть возможность достижения последнего положения, начиная от первого, путем приращения.

Временная сложность алгоритма линейно зависит от количества элементов в более коротком диапазоне.

Определяемый пользователем предикат не требуется для наложения отношения эквивалентности на симметричное, гибкое и транзитивное между операндами.

Пример

В следующем примере демонстрируется использование несовпадения. Перегрузка C++ 03 показана только с целью демонстрации того, как она может привести к непредвиденному результату.

Перемещает элементы, связанные с заданным диапазоном.

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, указывающий, откуда начинается диапазон элементов для перемещения.

last
Входной итератор, указывающий конец диапазона элементов для перемещения.

dest
Выходной итератор, который должен содержать перемещенные элементы.

Комментарии

move_backward

Перемещает элементы одного итератора в другой. Перемещение начинается с последнего элементом в указанном диапазоне и завершается первым элементом в этом диапазоне.

Параметры

first
Итератор, указывающий начало диапазона, из которого должны перемещаться элементы.

last
Итератор, указывающий конец диапазона, из которого должны перемещаться элементы. Этот элемент не перемещается.

destEnd
Двунаправленный итератор, обращающийся к позиции, которая на единицу превышает позицию завершающего элемента в диапазоне назначения.

Комментарии

move и move_backward — функциональный эквивалент использованию copy и copy_backward с итератором перемещения.

next_permutation

Изменяет порядок элементов в диапазоне, чтобы исходный порядок был заменен перестановкой «лексикографически следующий больший», если такая существует, где смысл термина «следующий» может быть задан бинарным предикатом.

Параметры

first
Двунаправленный итератор, указывающий позицию первого элемента в диапазоне, в котором переставляются элементы.

last
Двунаправленный итератор, указывающий позицию, следующую за последним элементом в диапазоне, в котором переставляются элементы.

pred
Определяемый пользователем объект функции предиката, задающий критерий сравнения, который должен соблюдаться идущими подряд элементами при упорядочении. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Возвращаемое значение

true Если следующая перестановка лексикографически существует и заменила исходный порядок диапазона; в противном случае false порядок преобразуется в лексикографически наименьшую перестановку.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Двоичный предикат по умолчанию — «меньше чем», и элементы в диапазоне должны быть сравнимы на «меньше чем», чтобы следующая перестановка была задана правильно.

Пример

nth_element

Разделяет диапазон элементов, правильно находя n-й элемент последовательности в диапазоне, чтобы все элементы перед ними были меньше или равны ему, а все элементы, которые следуют за ним в последовательности, больше или равны ему.

Параметры

exec
Используемая политика выполнения.

first
Итератор произвольного доступа, указывающий позицию первого элемента в разделяемом диапазоне.

nth
Итератор произвольного доступа, указывающий позицию элемента для правильного упорядочивания на границе раздела.

last
Итератор произвольного доступа, обращающийся к позиции, следующей за последним элементом в разделяемом диапазоне.

pred
Определяемый пользователем объект функции предиката, задающий критерий сравнения, который должен соблюдаться идущими подряд элементами при упорядочении. Предикат сравнения принимает два аргумента и возвращает, true когда удовлетворены и false не удовлетворены.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Если ни один из элементов не меньше другого, то эти элементы эквивалентны, но не обязательно равны.

Пример

none_of

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, указывающий, откуда должна начинаться проверка диапазона элементов на соответствие условию.

last
Входной итератор, указывающий конец диапазона элементов.

Возвращаемое значение

Комментарии

partial_sort

Упорядочивает указанное число меньших элементов в диапазоне в не нисходящий порядок или согласно критерию упорядочивания, заданному бинарным предикатом.

Параметры

exec
Используемая политика выполнения.

first
Итератор произвольного доступа, обращающийся к позиции первого элемента в сортируемом диапазоне.

sortEnd
Итератор произвольного доступа, обращающийся к позиции, следующей за последним элементом в сортируемом поддиапазоне.

last
Итератор произвольного доступа, обращающийся к позиции, следующей за последним элементом в диапазоне для частичной сортировки.

pred
Определяемый пользователем объект функции предиката, задающий критерий сравнения, который должен соблюдаться идущими подряд элементами при упорядочении. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Если ни один из элементов не меньше другого, то эти элементы эквивалентны, но не обязательно равны. sort Алгоритм не является стабильным и не гарантирует, что относительный порядок эквивалентных элементов будет сохранен. Алгоритм stable_sort сохраняет этот исходный порядок.

Пример

partial_sort_copy

Копирует элементы из исходного диапазона в диапазон назначения, где исходные элементы упорядочены по критерию «меньше либо равно» или согласно другому заданному бинарному предикату.

Параметры

exec
Используемая политика выполнения.

first1
Итератор ввода, обращающийся к позиции первого элемента в исходном диапазоне.

last1
Входной итератор, указывающий позицию, следующую за последним элементом в исходном диапазоне.

first2
Итератор произвольного доступа, указывающий позицию первого элемента в сортируемом диапазоне назначения.

last2
Итератор произвольного доступа, указывающий позицию, следующую за последним элементом в сортируемом диапазоне назначения.

pred
Определяемый пользователем объект функции предиката, задающий критерий сравнения, который должен соблюдаться идущими подряд элементами при упорядочении. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Возвращаемое значение

Итератор произвольного доступа, указывающий элемент в диапазоне назначения, находящийся на позиции, следующей за последним элементом, вставленным из исходного диапазона.

Комментарии

Исходный диапазон и диапазон назначения не должны перекрываться и должны быть допустимыми. Все указатели должны поддерживать удаление ссылок, а последняя позиция в каждой последовательности должна быть доступна из первой позиции путем приращения.

Бинарный предикат должен предоставлять строгую квазиупорядоченность, чтобы элементы, которые не являются эквивалентными, упорядочивались, а эквивалентные элементы — нет. Два элемента эквивалентны в рамках условия «меньше чем», но они не обязательно равны, если ни один из элементов не меньше другого.

Пример

partition

Разделяет элементы диапазона на два непересекающихся множества, при этом элементы, удовлетворяющие унарному предикату, расположены перед теми, которые ему не удовлетворяют.

Параметры

exec
Используемая политика выполнения.

first
Двунаправленный итератор адресует позицию первого элемента в разделяемом диапазоне.

last
Двунаправленный итератор, указывающий позицию, следующую за последним элементом в разделяемом диапазоне.

Возвращаемое значение

Двунаправленный итератор указывает позицию первого элемента в диапазоне, не соответствующего условию предиката.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Элементы a и b эквивалентны, но не обязательно равны, если оба pred( a, b ) имеют значение false и pred( b, a ) имеют значение false, где pred — это предикат, заданный параметром. partition Алгоритм не является стабильным и не гарантирует, что относительный порядок эквивалентных элементов будет сохранен. Алгоритм stable_partition сохраняет этот исходный порядок.

Пример

partition_copy

Копирует элементы, возвращающие true для какого-либо условия, в одно место назначения, а возвращающие false — в другое. Эти элементы должны поступать из указанного диапазона.

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, указывающий начало диапазона для проверки условия.

last
Входной итератор, указывающий конец диапазона.

Комментарии

partition_point

Возвращает первый элемент, который не удовлетворяет условию, в данном диапазоне. Элементы сортируются так, чтобы те, которые соответствуют условию, располагались перед теми, что не соответствуют.

Параметры

Возвращаемое значение

Комментарии

pop_heap

Удаляет наибольший элемент из начала кучи до позиции, следующей за последней, в диапазоне, а затем формирует новую кучу из оставшихся элементов.

Параметры

first
Итератор произвольного доступа, обращающийся к позиции первого элемента в куче.

last
Итератор произвольного доступа, обращающийся к позиции, следующей за последним элементом в куче.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Комментарии

Алгоритм pop_heap представляет операцию, противоположную выполняемой алгоритмом push_heap, в которой элемент в позиции, следующей за последним элементом в диапазоне, добавляется в кучу, состоящую из предыдущих элементов в диапазоне, в том случае, когда элемент, добавляемый в кучу, больше, чем любые элементы, уже находящиеся в куче.

Кучи имеют два следующих свойства.

Первый элемент — всегда наибольший.

Элементы могут добавляться и удаляться в логарифмическое время.

Кучи — идеальный способ реализации очередей с приоритетами, и они используются в классе priority_queue адаптеров контейнеров библиотеки стандартных программ C++.

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Диапазон, исключая только что добавленный в конце элемент, должен быть кучей.

Пример

prev_permutation

Изменяет порядок элементов в диапазоне, чтобы исходный порядок был заменен перестановкой «лексикографически предыдущий больший», если такая существует, где смысл термина «предыдущий» может быть задан бинарным предикатом.

Параметры

first
Двунаправленный итератор, указывающий позицию первого элемента в диапазоне, в котором переставляются элементы.

last
Двунаправленный итератор, указывающий позицию, следующую за последним элементом в диапазоне, в котором переставляются элементы.

pred
Определяемый пользователем объект функции предиката, задающий критерий сравнения, который должен соблюдаться идущими подряд элементами при упорядочении. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Возвращаемое значение

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Двоичный предикат по умолчанию — «меньше чем», и элементы в диапазоне должны быть сравнимы на «меньше чем», чтобы предыдущая перестановка была задана правильно.

Пример

push_heap

Добавляет элемент, находящийся в конце диапазона, в существующую кучу, состоящую из предыдущих элементов диапазона.

Параметры

first
Итератор произвольного доступа, обращающийся к позиции первого элемента в куче.

last
Итератор произвольного доступа, обращающийся к позиции, следующей за последним элементом в диапазоне, подлежащем преобразованию в кучу.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Комментарии

Элемент сначала должен быть помещен обратно в конец существующей кучи; затем используется алгоритм для добавления этого элемента в существующую кучу.

Кучи имеют два следующих свойства.

Первый элемент — всегда наибольший.

Элементы могут добавляться и удаляться в логарифмическое время.

Кучи — идеальный способ реализации очередей с приоритетами, и они используются в классе priority_queue адаптеров контейнеров библиотеки стандартных программ C++.

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Диапазон, исключая только что добавленный в конце элемент, должен быть кучей.

Пример

random_shuffle

remove

Удаляет указанное значение из заданного диапазона без нарушения порядка остальных элементов и возвращает конец нового диапазона после удаления указанного значения.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, обращающийся к положению первого элемента в диапазоне, в котором удаляются элементы.

last
Прямой итератор, обращающийся к положению за последним элементом в диапазоне, в котором удаляются элементы.

value
Значение, которое необходимо удалить из диапазона.

Возвращаемое значение

Прямой итератор, обращающийся к новой конечной позиции измененного диапазона сразу за последним элементом оставшейся последовательности без указанного значения.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Порядок неудаляемых элементов не меняется.

Пример

remove_copy

Копирует элементы из исходного диапазона в диапазон назначения за исключением того, что элементы с заданным значением не копируются, не нарушая порядок остальных элементов и возвращая конец нового диапазона назначения.

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, указывающий на позицию первого элемента в диапазоне, в котором удаляются элементы.

last
Входной итератор, указывающий на позицию, следующую за последним элементом в диапазоне, в котором удаляются элементы.

result
Выходной итератор, указывающий на позицию первого элемента в диапазоне назначения, в который удаляются элементы.

value
Значение, которое необходимо удалить из диапазона.

Возвращаемое значение

Прямой итератор, обращающийся к новой конечной позиции диапазона назначения, следующей за последним элементом копии оставшейся последовательности без указанного значения.

Комментарии

Исходный и конечный диапазоны, на которые указывают ссылки, должны быть допустимыми. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Диапазон назначения должен иметь достаточно места для хранения оставшихся элементов, которые будут скопированы после удаления элементов с указанным значением.

Порядок неудаляемых элементов не меняется.

Пример

remove_copy_if

Копирует элементы из исходного диапазона в диапазон назначения, за исключением элементов, которые соответствуют предикату. Элементы копируются, не нарушая порядок оставшихся элементов. Возвращает конец нового диапазона назначения.

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, указывающий на позицию первого элемента в диапазоне, в котором удаляются элементы.

last
Входной итератор, указывающий на позицию, следующую за последним элементом в диапазоне, в котором удаляются элементы.

result
Выходной итератор, указывающий на позицию первого элемента в диапазоне назначения, в который удаляются элементы.

pred
Унарный предикат, который должен быть удовлетворен, является значением заменяемого элемента.

Возвращаемое значение

Прямой итератор, указывающий на новую конечную позицию диапазона назначения, следующую за последним элементом копии оставшейся последовательности без элементов, удовлетворяющих предикату.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Диапазон назначения должен иметь достаточно места для хранения оставшихся элементов, которые будут скопированы после удаления элементов с указанным значением.

Порядок неудаляемых элементов не меняется.

Сведения о действии этих функций см. в разделе Checked Iterators.

Пример

remove_if

Удаляет элементы, соответствующие предикату, из заданного диапазона без нарушения порядка остальных элементов и возвращает конец нового диапазона после удаления указанного значения.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий на позицию первого элемента в диапазоне, из которого удаляются элементы.

last
Прямой итератор, указывающий на позицию, следующую за последним элементом в диапазоне, из которого удаляются элементы.

pred
Унарный предикат, который должен быть удовлетворен, является значением заменяемого элемента.

Возвращаемое значение

Прямой итератор, обращающийся к новой конечной позиции измененного диапазона сразу за последним элементом оставшейся последовательности без указанного значения.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Порядок неудаляемых элементов не меняется.

Класс list содержит более эффективную версию функции-члена remove, которая удаляет ссылки для указателей.

Пример

replace

Проверяет каждый элемент в диапазоне и заменяет его, если он соответствует заданному значению.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий на позицию первого элемента в диапазоне, в котором заменяются элементы.

last
Прямой итератор, указывающий на позицию, следующую за последним элементом в диапазоне, в котором заменяются элементы.

oldVal
Старое значение заменяемых элементов.

newVal
Новое значение, присваиваемое элементам со старым значением.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Порядок незаменяемых элементов не меняется.

Пример

replace_copy

Проверяет каждый элемент в исходном диапазоне и заменяет его, если он соответствует заданному значению, одновременно копируя результат в новый диапазон назначения.

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, указывающий на позицию первого элемента в диапазоне, в котором заменяются элементы.

last
Входной итератор, указывающий на позицию, следующую за последним элементом в диапазоне, в котором заменяются элементы.

result
Выходной итератор, указывающий на первый элемент в диапазоне назначения, в который копируется измененная последовательность элементов.

oldVal
Старое значение заменяемых элементов.

newVal
Новое значение, присваиваемое элементам со старым значением.

Возвращаемое значение

Выходной итератор, указывающий на точку, следующую за последним элементом в целевом диапазоне, куда копируется измененная последовательность элементов.

Комментарии

Исходный и конечный диапазоны, на которые указывают ссылки, не должны перекрываться и должны быть допустимыми. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Порядок незаменяемых элементов не меняется.

Пример

replace_copy_if

Проверяет каждый элемент в исходном диапазоне и заменяет его, если он соответствует заданному предикату, одновременно копируя результат в новый диапазон назначения.

Параметры

exec
Используемая политика выполнения.

first
Входной итератор, указывающий на позицию первого элемента в диапазоне, в котором заменяются элементы.

last
Входной итератор, указывающий на позицию, следующую за последним элементом в диапазоне, в котором заменяются элементы.

result
Выходной итератор, указывающий на позицию первого элемента в диапазоне назначения, в который копируются элементы.

pred
Унарный предикат, который должен быть удовлетворен, является значением заменяемого элемента.

value
Новое значение, присваиваемое элементам, старые значения которых удовлетворяют предикату.

Возвращаемое значение

Выходной итератор, указывающий на точку, следующую за последним элементом в целевом диапазоне, куда копируется измененная последовательность элементов.

Комментарии

Исходный и конечный диапазоны, на которые указывают ссылки, не должны перекрываться и должны быть допустимыми. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Порядок незаменяемых элементов не меняется.

Пример

replace_if

Проверяет каждый элемент в диапазоне и заменяет его, если он соответствует заданному предикату.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий на позицию первого элемента в диапазоне, в котором заменяются элементы.

last
Итератор, указывающий на позицию, следующую за последним элементом в диапазоне, в котором заменяются элементы.

pred
Унарный предикат, который должен быть удовлетворен, является значением заменяемого элемента.

value
Новое значение, присваиваемое элементам, старые значения которых удовлетворяют предикату.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Порядок незаменяемых элементов не меняется.

Пример

reverse

Изменяет порядок элементов в диапазоне на обратный.

Параметры

exec
Используемая политика выполнения.

first
Двунаправленный итератор, указывающий на позицию первого элемента в диапазоне, в котором переставляются элементы.

last
Двунаправленный итератор, указывающий на позицию, следующую за последним элементом в диапазоне, в котором переставляются элементы.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Пример

reverse_copy

Изменяет порядок элементов в исходном диапазоне на обратный, одновременно копируя их в диапазон назначения

Параметры

exec
Используемая политика выполнения.

first
Двунаправленный итератор, указывающий на позицию первого элемента в исходном диапазоне, в котором переставляются элементы.

last
Двунаправленный итератор, указывающий на позицию, следующую за последним элементом в исходном диапазоне, в котором переставляются элементы.

result
Выходной итератор, указывающий на позицию первого элемента в диапазоне назначения, в который копируются элементы.

Возвращаемое значение

Выходной итератор, указывающий на точку, следующую за последним элементом в целевом диапазоне, куда копируется измененная последовательность элементов.

Комментарии

Исходный и конечный диапазоны, на которые указывают ссылки, должны быть допустимыми. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Пример

rotate

Меняет местами элементы в двух соседних диапазонах.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий на позицию первого элемента в диапазоне для изменения места.

middle
Прямой итератор, определяющий границу в диапазоне и указывающий на позицию первого элемента во второй части диапазона, элементы которого должны поменяться местами с элементами в первой части диапазона.

last
Прямой итератор, указывающий на позицию, следующую за последним элементом в диапазоне для изменения места.

Комментарии

Указанные диапазоны должны быть допустимыми. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Пример

rotate_copy

Меняет местами элементы в двух соседних диапазонах в пределах исходного диапазона и копирует результат в диапазон назначения.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий на позицию первого элемента в диапазоне для изменения места.

middle
Прямой итератор, определяющий границу в диапазоне и указывающий на позицию первого элемента во второй части диапазона, элементы которого должны поменяться местами с элементами в первой части диапазона.

last
Прямой итератор, указывающий на позицию, следующую за последним элементом в диапазоне для изменения места.

result
Итератор вывода указывает на позицию первого элемента в диапазоне назначения.

Возвращаемое значение

Выходной итератор, указывающий на позицию, следующую за последним элементом в диапазоне назначения.

Комментарии

Указанные диапазоны должны быть допустимыми. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Пример

sample

search

Выполняет поиск первого вхождения последовательности в целевой диапазон, элементы которого равны указанным в заданной последовательности элементов или элементы которого равноценны в смысле, заданным бинарным предикатом, элементам в заданной последовательности.

Параметры

exec
Используемая политика выполнения.

first1
Прямой итератор, адресующий положение первого элемента в диапазоне для поиска.

last1
Прямой итератор, адресующий положение на единицу после последнего элемента в диапазоне для поиска.

first2
Прямой итератор, адресующий положение первого элемента в диапазоне для сравнения.

last2
Прямой итератор, адресующий положение на единицу после последнего элемента в диапазоне для сравнения.

pred
Заданный пользователем объект функции предиката, определяющий условие, которое должно выполняться, чтобы два элемента считались эквивалентными друг другу. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

searcher
Поиск, инкапсулирующий искомый шаблон и используемый алгоритм поиска. Дополнительные сведения о поисковых запросах см. в разделе класс, класси класс.

Возвращаемое значение

Прямой итератор, адресующий положение первого элемента первой последовательности, совпадающей с определенной последовательностью или эквивалентной согласно условию, заданному двоичным предикатом.

Комментарии

Диапазоны, на которые указывают ссылки, должны быть допустимыми; все указатели должны поддерживать сброс ссылок; в каждой последовательности должна быть возможность достижения последнего положения с первого путем приращения.

Средняя сложность — линейная относительно размера диапазона для поиска; и в наихудшем случае сложность также линейная относительно размера искомой последовательности.

Пример

search_n

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

Параметры

exec
Используемая политика выполнения.

first1
Прямой итератор, адресующий положение первого элемента в диапазоне для поиска.

last1
Прямой итератор, адресующий положение на единицу после последнего элемента в диапазоне для поиска.

count
Размер искомой последовательности.

value
Значение элементов в искомой последовательности.

pred
Заданный пользователем объект функции предиката, определяющий условие, которое должно выполняться, чтобы два элемента считались эквивалентными друг другу. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Возвращаемое значение

Прямой итератор, адресующий положение первого элемента первой последовательности, совпадающей с определенной последовательностью или эквивалентной согласно условию, заданному двоичным предикатом.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Сложность линейная по отношению к размеру диапазона поиска.

Пример

set_difference

Объединяет все элементы, принадлежащие одному отсортированному исходному диапазону, но не второму отсортированному исходному диапазону, в один отсортированный диапазон назначения, где критерий упорядочивания может быть указан бинарным предикатом.

Параметры

exec
Используемая политика выполнения.

first1
Входной итератор, указывающий на позицию первого элемента в первом из двух упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий разность двух исходных диапазонов.

last1
Входной итератор, указывающий на позицию, следующую за последним элементом в первом из двух упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий разность двух исходных диапазонов.

first2
Входной итератор, указывающий на позицию первого элемента во втором из двух последовательных упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий разность двух исходных диапазонов.

last2
Входной итератор, указывающий на позицию, следующую за последним элементом во втором из двух последовательных упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий разность двух исходных диапазонов.

result
Выходной итератор, указывающий на позицию первого элемента в диапазоне назначения, в котором два исходных диапазона следует объединить в один упорядоченный диапазон, представляющий разность двух исходных диапазонов.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Бинарный предикат принимает два аргумента и должен возвращать, true Если первый элемент меньше второго элемента, и false в противном случае.

Возвращаемое значение

Выходной итератор, указывающий на позицию, следующую за последним элементом в упорядоченном диапазоне назначения, представляющем разность двух исходных диапазонов.

Комментарии

Упорядоченные исходные диапазоны, на которые указывают ссылки, должны быть допустимыми. Все указатели должны поддерживать отмену ссылок. В каждой последовательности должна быть возможность достижения последней позиции с первой путем приращения.

Диапазон назначения не должен перекрывать исходные диапазоны и должен быть достаточно большим, чтобы содержать первый исходный диапазон.

Каждый упорядоченный исходный диапазон должны быть упорядочен в качестве предусловия для применения алгоритма set_difference в соответствии с теми же правилами, чтобы использоваться алгоритмом для упорядочения объединенных диапазонов.

Операция стабильна, так как в диапазоне назначения сохраняется относительный порядок элементов в каждом диапазоне. Алгоритм merge не изменяет исходные диапазоны.

Типы значений итераторов ввода должны быть сравнимы по меньшей мере с сортировкой, так что при наличии двух элементов можно определить, что они эквивалентны (в смысле, что ни одно из них не меньше другого) или что один меньше другого. Это приводит к упорядочению неравнозначных элементов. Если эквивалентные элементы имеются в обоих исходных диапазонах, в диапазоне назначения элементы из первого диапазона будут предшествовать элементам из второго исходного диапазона. Если исходные диапазоны содержат повторяющиеся элементы и в первом исходном диапазоне их больше, чем во втором, диапазон назначения будет содержать число, на которое вхождения этих элементов в первом исходном диапазоне превышают вхождения этих элементов во втором исходном диапазоне.

Пример

set_intersection

Объединяет все элементы, входящие в оба исходных упорядоченных диапазона, в один упорядоченный диапазон назначения, где критерий порядка сортировки может быть указан бинарным предикатом.

Параметры

exec
Используемая политика выполнения.

first1
Входной итератор, указывающий на позицию первого элемента в первом из двух упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий пересечение двух исходных диапазонов.

last1
Входной итератор, указывающий на позицию, следующую за последним элементом в первом из двух упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий пересечение двух исходных диапазонов.

first2
Входной итератор, указывающий на позицию первого элемента во втором из двух последовательных упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий пересечение двух исходных диапазонов.

last2
Входной итератор, указывающий на позицию, следующую за последним элементом во втором из двух последовательных упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий пересечение двух исходных диапазонов.

result
Выходной итератор, указывающий на позицию первого элемента в диапазоне назначения, в котором два исходных диапазона следует объединить и упорядочить в один диапазон, представляющий пересечение двух исходных диапазонов.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Бинарный предикат принимает два аргумента и должен возвращать, true Если первый элемент меньше второго элемента, и false в противном случае.

Возвращаемое значение

Выходной итератор, указывающий на позицию, следующую за последним элементом в упорядоченном диапазоне назначения, представляющем пересечение двух исходных диапазонов.

Комментарии

Упорядоченные исходные диапазоны, на которые указывают ссылки, должны быть допустимыми. Все указатели должны поддерживать отмену ссылок. В каждой последовательности должна быть возможность достижения последней позиции с первой путем приращения.

Диапазон назначения не должен перекрывать исходные диапазоны и должен быть достаточно большим, чтобы содержать диапазон назначения.

Каждый упорядоченный исходный диапазон должен быть упорядочен в качестве предусловия для применения алгоритма merge в соответствии с тем же правилами, чтобы использоваться алгоритмом для упорядочения объединенных диапазонов.

Операция стабильна, так как в диапазоне назначения сохраняется относительный порядок элементов в каждом диапазоне. Алгоритм не изменяет исходные диапазоны.

В целях упорядочения типы значений входных итераторов должны подлежать сравнению «меньше чем» для установления такого порядка, чтобы, имея два элемента, можно было определить, что они равны (ни один не меньше другого) или что один меньше другого. Это приводит к упорядочению неравнозначных элементов. Если эквивалентные элементы имеются в обоих исходных диапазонах, в диапазоне назначения элементы из первого диапазона будут предшествовать элементам из второго исходного диапазона. Если исходные диапазоны содержат повторяющиеся элементы, диапазон назначения будет содержать максимальное количество элементов, входящих в оба исходных диапазона.

Пример

set_symmetric_difference

Объединяет все элементы, входящие в один, но не в оба исходных упорядоченных диапазона, в один упорядоченный диапазон назначения, где критерий порядка сортировки может быть указан бинарным предикатом.

Параметры

exec
Используемая политика выполнения.

first1
Входной итератор, указывающий на позицию первого элемента в первом из двух упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий симметрическую разность двух исходных диапазонов.

last1
Входной итератор, указывающий на позицию, следующую за последним элементом в первом из двух упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий симметрическую разность двух исходных диапазонов.

first2
Входной итератор, указывающий на позицию первого элемента во втором из двух последовательных упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий симметрическую разность двух исходных диапазонов.

last2
Входной итератор, указывающий на позицию, следующую за последним элементом во втором из двух последовательных упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий симметрическую разность двух исходных диапазонов.

result
Выходной итератор, указывающий на позицию первого элемента в диапазоне назначения, в котором два исходных диапазона следует объединить и упорядочить в один диапазон, представляющий симметрическую разность двух исходных диапазонов.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Бинарный предикат принимает два аргумента и должен возвращать, true Если первый элемент меньше второго элемента, и false в противном случае.

Возвращаемое значение

Выходной итератор, указывающий на позицию, следующую за последним элементом в упорядоченном диапазоне назначения, представляющем симметрическую разность двух исходных диапазонов.

Комментарии

Упорядоченные исходные диапазоны, на которые указывают ссылки, должны быть допустимыми. Все указатели должны поддерживать отмену ссылок. В каждой последовательности должна быть возможность достижения последней позиции с первой путем приращения.

Диапазон назначения не должен перекрывать исходные диапазоны и должен быть достаточно большим, чтобы содержать диапазон назначения.

Каждый упорядоченный исходный диапазон должны быть упорядочен в качестве предусловия для применения алгоритма merge* в соответствии с теми же правилами, чтобы использоваться алгоритмом для упорядочения объединенных диапазонов.

Операция стабильна, так как в диапазоне назначения сохраняется относительный порядок элементов в каждом диапазоне. Алгоритм merge не изменяет исходные диапазоны.

В целях упорядочения типы значений входных итераторов должны подлежать сравнению «меньше чем» для установления такого порядка, чтобы, имея два элемента, можно было определить, что они равны (ни один не меньше другого) или что один меньше другого. Это приводит к упорядочению неравнозначных элементов. Если эквивалентные элементы имеются в обоих исходных диапазонах, в диапазоне назначения элементы из первого диапазона будут предшествовать элементам из второго исходного диапазона. Если исходные диапазоны содержат повторяющиеся элементы, диапазон назначения будет содержать абсолютное значение числа, на которое вхождения этих элементов в одном исходном диапазоне превышают вхождения этих элементов во втором исходном диапазоне.

Пример

set_union

Объединяет все элементы, входящие в хотя бы один из двух исходных упорядоченных диапазонов, в один упорядоченный диапазон назначения, где критерий порядка сортировки может быть указан бинарным предикатом.

Параметры

exec
Используемая политика выполнения.

first1
Входной итератор, указывающий на позицию первого элемента в первом из двух упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий объединение двух исходных диапазонов.

last1
Входной итератор, указывающий на позицию, следующую за последним элементом в первом из двух упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий объединение двух исходных диапазонов.

first2
Входной итератор, указывающий на позицию первого элемента во втором из двух последовательных упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий объединение двух исходных диапазонов.

last2
Входной итератор, указывающий на позицию, следующую за последним элементом во втором из двух последовательных упорядоченных исходных диапазонов, которые следует объединить и упорядочить в один диапазон, представляющий объединение двух исходных диапазонов.

result
Выходной итератор, указывающий на позицию первого элемента в диапазоне назначения, в котором два исходных диапазона следует объединить и упорядочить в один диапазон, представляющий объединение двух исходных диапазонов.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Бинарный предикат принимает два аргумента и должен возвращать, true Если первый элемент меньше второго элемента, и false в противном случае.

Возвращаемое значение

Выходной итератор, указывающий на позицию, следующую за последним элементом в упорядоченном диапазоне назначения, представляющем объединение двух исходных диапазонов.

Комментарии

Упорядоченные исходные диапазоны, на которые указывают ссылки, должны быть допустимыми. Все указатели должны поддерживать отмену ссылок. В каждой последовательности должна быть возможность достижения последней позиции с первой путем приращения.

Диапазон назначения не должен перекрывать исходные диапазоны и должен быть достаточно большим, чтобы содержать диапазон назначения.

Каждый упорядоченный исходный диапазон должны быть упорядочен в качестве предусловия для применения алгоритма merge в соответствии с теми же правилами, чтобы использоваться алгоритмом для упорядочения объединенных диапазонов.

В целях упорядочения типы значений входных итераторов должны подлежать сравнению «меньше чем» для установления такого порядка, чтобы, имея два элемента, можно было определить, что они равны (ни один не меньше другого) или что один меньше другого. Это приводит к упорядочению неравнозначных элементов. Если эквивалентные элементы имеются в обоих исходных диапазонах, в диапазоне назначения элементы из первого диапазона будут предшествовать элементам из второго исходного диапазона. Если исходные диапазоны содержат повторяющиеся элементы, диапазон назначения будет содержать максимальное количество элементов, входящих в оба исходных диапазона.

Пример

shuffle

Перемешивает (изменяет порядок) элементы в указанном диапазоне, используя генератор случайных чисел.

Параметры

Комментарии

Упорядочивает элементы в указанном диапазоне в не нисходящем порядке или согласно критерию упорядочивания, заданному бинарным предикатом.

Параметры

exec
Используемая политика выполнения.

first
Итератор произвольного доступа, обращающийся к позиции первого элемента в сортируемом диапазоне.

last
Итератор произвольного доступа, обращающийся к позиции после последнего элемента в сортируемом диапазоне.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Если ни один из элементов не меньше другого, то эти элементы эквивалентны, но не обязательно равны. Алгоритм sort нестабилен и поэтому не гарантирует, что относительный порядок эквивалентных элементов будет сохранен. Алгоритм stable_sort сохраняет этот исходный порядок.

Пример

sort_heap

Преобразует кучу в упорядоченный диапазон.

Параметры

first
Итератор произвольного доступа, обращающийся к позиции первого элемента в целевой куче.

last
Итератор произвольного доступа, обращающийся к позиции, следующей за последним элементом в целевой куче.

pred
Определяемый пользователем объект функции предиката, задающий условие, когда один элемент меньше другого. Предикат сравнения принимает два аргумента и возвращает, true когда удовлетворены и false не удовлетворены.

Комментарии

Кучи имеют два следующих свойства.

Первый элемент — всегда наибольший.

Элементы могут добавляться и удаляться в логарифмическое время.

После применения этого алгоритма диапазон, к которому он был применен, больше не является кучей.

Это не устойчивая сортировка, так как относительный порядок эквивалентных элементов не обязательно сохраняется.

Кучи — это идеальный способ реализации очередей с приоритетами и их использования в реализации классаадаптера контейнера стандартной библиотеки C++.

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Пример

stable_partition

Разделяет элементы диапазона на два непересекающихся множества, при этом элементы, удовлетворяющие унарному предикату, расположены перед теми, которые ему не удовлетворяют, с сохранением относительного порядка равноценных элементов.

Параметры

exec
Используемая политика выполнения.

first
Двунаправленный итератор адресует позицию первого элемента в разделяемом диапазоне.

last
Двунаправленный итератор, указывающий позицию, следующую за последним элементом в разделяемом диапазоне.

Возвращаемое значение

Двунаправленный итератор указывает позицию первого элемента в диапазоне, не соответствующего условию предиката.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Элементы a и b эквивалентны, но не обязательно равны, если оба имеют значение false и имеют значение false, где pred — это предикат, заданный параметром. stable_partition Алгоритм является стабильным и гарантирует, что относительный порядок эквивалентных элементов будет сохранен. Алгоритм partition не обязательно сохраняет этот исходный порядок.

Пример

stable_sort

Упорядочивает элементы в указанном диапазоне в не нисходящем порядке или согласно критерию упорядочивания, заданному бинарным предикатом, и сохраняет относительный порядок равноценных элементов.

Параметры

exec
Используемая политика выполнения.

first
Двунаправленный итератор указывает позицию первого элемента в диапазоне для сортировки.

last
Двунаправленный итератор указывает позицию, следующую за последним элементом в диапазоне для сортировки.

pred
Определяемый пользователем объект функции предиката, задающий критерий сравнения, который должен соблюдаться идущими подряд элементами при упорядочении. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Комментарии

Указанный диапазон должен быть допустимым. Все указатели должны поддерживать удаление ссылок, а последняя позиция в последовательности должна быть доступна из первой позиции за счет увеличения на один.

Если ни один из элементов не меньше другого, то эти элементы эквивалентны, но не обязательно равны. sort Алгоритм является стабильным и гарантирует, что относительный порядок эквивалентных элементов будет сохранен.

Пример

Первое переопределение меняет местами значения двух объектов. Второе переопределение меняет местами значения двух массивов объектов.

Параметры

left
Для первого переопределения — первый объект для обмена его содержимого. Для второго переопределения — первый массив для обмена его содержимого.

right
Для первого переопределения — второй объект для обмена его содержимого. Для второго переопределения — второй массив для обмена его содержимого.

Комментарии

Первая перегрузка предназначена для работы с отдельными объектами. Вторая перегрузка меняет местами содержимое объектов в двух массивах.

Пример

swap_ranges

Меняет местами элементы одного диапазона с элементами другого диапазона такого же размера.

Параметры

exec
Используемая политика выполнения.

first1
Прямой итератор, указывающий первую позицию первого диапазона элементов для обмена.

last1
Прямой итератор, указывающий позицию, следующую за последней позицией первого диапазона элементов для обмена.

first2
Прямой итератор, указывающий первую позицию второго диапазона элементов для обмена.

Возвращаемое значение

Прямой итератор, указывающий позицию, следующую за последней позицией второго диапазона элементов для обмена.

Комментарии

Диапазоны, на которые указывают ссылки, должны быть допустимыми; все указатели должны поддерживать сброс ссылок; в каждой последовательности должна быть возможность достижения последнего положения с первого путем приращения. Второй диапазон должен достигать размеров первого диапазона.

Пример

transform

Применяет заданный объект функции к каждому элементу в исходном диапазоне или к паре элементов из двух исходных диапазонов и копирует возвращаемые значения объекта функции в диапазон назначения.

Параметры

exec
Используемая политика выполнения.

first1
Итератор ввода указывает на позицию первого элемента в первом исходном обрабатываемом диапазоне.

last1
Итератор ввода указывает на позицию, следующую за последним элементом в первом исходном обрабатываемом диапазоне.

first2
Итератор ввода указывает на позицию первого элемента во втором исходном обрабатываемом диапазоне.

result
Итератор вывода указывает на позицию первого элемента в диапазоне назначения.

func
Определенный пользователем объект унарной функции, используемый в первой версии алгоритма, который применяется к каждому элементу в первом исходном диапазоне, или определенный пользователем объект бинарной функции, используемый во второй версии алгоритма, который применяется попарно в прямом порядке к двум исходным диапазонам.

Возвращаемое значение

Итератор вывода указывает на позицию после последнего элемента в диапазоне назначения, который получает выходные элементы, преобразованные объектом функции.

Комментарии

Диапазоны, на которые указывают ссылки, должны быть допустимыми; все указатели должны поддерживать сброс ссылок; в каждой последовательности должна быть возможность достижения последнего положения с первого путем приращения. Диапазон назначения должен быть достаточно большим, чтобы содержать преобразованный исходный диапазон.

Если результат установлен равным в первой версии алгоритма, исходный и конечный диапазоны будут одинаковыми, а последовательность будет изменена на месте. Но result может не обращаться к положению в диапазоне [ first1 + 1, last1 ).

Пример

unique

Удаляет повторяющиеся элементы, расположенные в указанном диапазоне рядом друг с другом.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий позицию первого элемента в диапазоне, который должен проверяться для поиска и удаления дубликатов.

last
Прямой итератор, указывающий позицию, следующую за последним элементом в диапазоне, который должен проверяться для поиска и удаления дубликатов.

pred
Заданный пользователем объект функции предиката, определяющий условие, которое должно выполняться, чтобы два элемента считались эквивалентными друг другу. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Возвращаемое значение

Прямой итератор в новый конец измененной последовательности, которая не содержит последовательных дубликатов, указывающий позицию, следующую за последним неудаленным элементом.

Комментарии

Обе формы алгоритма удаляют второй дубликат последовательной пары равных элементов.

Действие алгоритма стабильно, поэтому относительный порядок неудаленных элементов не изменяется.

В классе list имеется более эффективная функция-член unique, которая может работать лучше.

Эти алгоритмы не могут использоваться в ассоциативном контейнере.

Пример

unique_copy

Копирует элементы из исходного диапазона в диапазон назначения за исключением повторяющихся элементов, расположенных рядом друг с другом.

Параметры

exec
Используемая политика выполнения.

first
Прямой итератор, указывающий на позицию первого элемента в исходном диапазоне для копирования.

last
Прямой итератор, указывающий на позицию, следующую за последним элементом в исходном диапазоне для копирования.

result
Выходной итератор, указывающий на позицию первого элемента в диапазоне назначения, получающем копию с последовательными удаленными дубликатами.

pred
Заданный пользователем объект функции предиката, определяющий условие, которое должно выполняться, чтобы два элемента считались эквивалентными друг другу. Бинарный предикат принимает два аргумента и возвращает true в случае соответствия и false в случае несоответствия.

Возвращаемое значение

Выходной итератор, указывающий на позицию, следующую за последним элементом в диапазоне назначения, получающем копию с последовательными удаленными дубликатами.

Комментарии

Обе формы алгоритма удаляют второй дубликат последовательной пары равных элементов.

Действие алгоритма стабильно, поэтому относительный порядок неудаленных элементов не изменяется.

Диапазоны, на которые указывают ссылки, должны быть допустимыми. Все указатели должны поддерживать сброс ссылок. В каждой последовательности должна быть возможность достижения последнего положения с первого путем приращения.

Пример

upper_bound

Находит позицию первого элемента в упорядоченном диапазоне, который имеет значение больше указанного значения, где критерий упорядочивания может быть задан бинарным предикатом.

Параметры

first
Позиция первого элемента в диапазоне для поиска.

last
Позиция, следующая за последним элементом в диапазоне для поиска.

value
Значение в упорядоченном диапазоне, которое должно превышаться значением элемента, указанного возвращенным итератором.

pred
Определяемый пользователем объект функции предиката сравнения, определяющий, в котором один элемент меньше другого. Предикат сравнения принимает два аргумента и возвращает, true когда удовлетворены и false не удовлетворены.

Возвращаемое значение

Прямой итератор, указывающий позицию первого элемента со значением, превышающим указанное значение.

Комментарии

Упорядоченный исходный диапазон, на который указывает ссылка, должен быть допустим. Все итераторы должны поддерживать отмену ссылок. В последовательности должна быть возможность достижения последней позиции с первой путем приращения.

Отсортированный диапазон — это предварительное условие использования и, upper_bound где критерий упорядочивания совпадает с указанным предикатом сравнения.

В целях упорядочения типы значений прямых итераторов должны подлежать сравнению «меньше чем», чтобы при наличии двух элементов можно было определить, что они равны (т. е. ни один не меньше другого) или что один меньше другого. Это приводит к упорядочению неравнозначных элементов.

Источник

Читайте также:  loop station что это
Сказочный портал