Всюду при указании сложности алгоритма под N понимается разность итераторов distance(first, last) (если N имеет индекс, то подразумевается, что итераторы имеют такой же номер, например N>1 = distance(first1, last1)). Если сложность алгоритма является постоянной, т. е. не зависит от размера обрабатываемой последовательности, то она не указывается.
1.3.3. Алгоритмы общего назначения
Алгоритмы, описываемые в данном пункте, определены в заголовочном файле
Находит первую пару соседних элементов из диапазона [first, last), которые равны (или, при наличии предиката pred(>*p, >*(p + 1)), для которых данный предикат возвращает true). Возвращает итератор, связанный с первым элементом найденной пары, или last, если пара не найдена.
Сложность линейная (не более N + 1 вызовов pred).
Возвращает true, если все элементы диапазона [first, last) удовлетворяют предикату pred. В случае пустого диапазона также возвращается true.
Сложность линейная (не более N вызовов pred).
Возвращает true, если хотя бы один элемент диапазона [first, last) удовлетворяет предикату pred. В случае пустого диапазона возвращается false.
Сложность линейная (не более N вызовов pred).
Использует двоичный поиск для проверки того, содержится ли в диапазоне [first, last) значение value (если значение найдено, то возвращает true, иначе false). Содержимое диапазона должно быть предварительно отсортировано в соответствии с порядком, задаваемым предикатом comp(>*p1, >*p2) или (по умолчанию) операцией <.
Сложность логарифмическая (не более log N + 2 сравнений).
Копирует элементы из [first, last) в диапазон, начинающийся с result, и возвращает позицию за последним скопированным элементом в полученном диапазоне. Итератор result не может находиться в исходном диапазоне [first, last), но другие части выходного диапазона могут накладываться на исходный диапазон. Таким образом, данный алгоритм можно применять для «копирования влево», т. е. копирования в ситуации, когда левая граница выходного диапазона находится слева от исходного диапазона.
Сложность линейная (N присваиваний).
Выполняет те же действия, что и copy, но перебирает исходные данные в обратном порядке: от элемента, предшествующего last, до first. Итератор result_last должен указывать на элемент, следующий за концом выходной последовательности; возвращаемое значение – это итератор, указывающий на первый элемент выходной последовательности. Итератор result_last не может находиться в диапазоне (first, last] (обратите внимание на границы этого диапазона), но другие части выходного диапазона могут накладываться на исходный диапазон. Таким образом, данный алгоритм можно применять для «копирования вправо», т. е. копирования в ситуации, когда правая граница выходного диапазона находится справа от исходного диапазона.
Сложность линейная (N присваиваний).
Копирует в диапазон, начинающийся с result, все элементы диапазона [first, last), для которых pred возвращает true. Возвращает позицию за последним скопированным элементом в полученном диапазоне. Относительный порядок элементов в полученном диапазоне сохраняется. Исходный и результирующий диапазоны не должны перекрываться.
Сложность линейная (N сравнений).
Копирует в диапазон, начинающийся с result, n элементов диапазона, начинающегося с first.
Сложность линейная (n присваиваний).
Возвращает количество элементов в диапазоне [first, last), которые равны значению value.
Сложность линейная (N сравнений).
Возвращает количество элементов в диапазоне [first, last), для которых выражение pred(>*p) равно true.
Сложность линейная (