этим алгоритмам требуются две пары прямых итераторов. Для обозначения первой своей последовательности алгоритм >find_first_of()
использует итераторы ввода и прямые итераторы для второй. Эти алгоритмы ищут последовательность, а не одиночный элемент.
>search(beg1, end1, beg2, end2)
>search(beg1, end1, beg2, end2, binaryPred)
Возвращает итератор на первую позицию исходного диапазона, с которой начинается искомая последовательность. Возвращает итератор >end1
, если искомая последовательность не найдена.
>find_first_of(beg1, end1, beg2, end2)
>find_first_of(beg1, end1, beg2, end2, binaryPred)
Возвращает итератор на первое вхождение в первом диапазоне любого элемента из второго диапазона. Возвращает итератор >endl
, если искомое соответствие отсутствует.
>find_end(beg1, end1, beg2, end2)
>find_end(beg1, end1, beg2, end2, binaryPred)
Подобен алгоритму >search()
, но возвращает итератор на последнюю позицию в исходном диапазоне, в которой второй диапазон встречается как внутренняя последовательность. Возвращает итератор >end1
, если вторая последовательность пуста или не найдена.
А.2.2. Другие алгоритмы, осуществляющие только чтение
Для первых двух аргументов этим алгоритмам требуются итераторы ввода.
Алгоритмы >equal()
и >mismatch()
получают также дополнительный итератор ввода, обозначающий начало второго диапазона. Они также предоставляют две перегруженных версии. Первая версия для сравнения элементов использует оператор равенства (>==
) базового типа, а вторая сравнивает элементы используя предоставленный пользователем предикат >unaryPred
или >binaryPred
.
>for_each(beg, end, unaryOp)
Вызываемый объект (см. раздел 10.3.2) >unaryOp
применяется к каждому элементу в исходном диапазоне. Возвращаемое значение объекта >unaryOp
(если оно есть) игнорируется. Если итераторы позволяют запись в элементы при помощи оператора обращения к значению, то вызываемый объект >unaryOp
способен изменять элементы.
>mismatch(beg1, end1, beg2)
>mismatch(beg1, end1, beg2, binaryPred)
Сравнивает элементы в двух последовательностях. Возвращает пару (см. раздел 11.2.3) итераторов, обозначающих первые элементы в каждой не совпадающей последовательности. Если все элементы соответствуют друг другу, первый итератор возвращенной пары окажется равным >end1
, а итератор >beg2
— смещению, равному размеру первой последовательности.
>equal(beg1, end1, beg2)
>equal(beg1, end1, beg2, binaryPred)
Выявляет равенство двух последовательностей. Возвращает значение >true
, если каждый элемент в исходном диапазоне равен соответствующему элементу последовательности, начинающейся с позиции >beg2
.
А.2.3. Алгоритмы бинарного поиска
Хотя эти алгоритмы можно использовать с прямыми итераторами, они обладают специализированными версиями, которые работают с итераторами прямого доступа и выполняются гораздо быстрей.
Этим алгоритмам требуются прямые итераторы, но они оптимизированы так, что выполняются намного быстрее, если вызываются с итераторами прямого доступа. С технической точки зрения, независимо от типа итератора, эти алгоритмы выполняют логарифмическое количество сравнений. Но при использовании с прямыми итераторами они должны выполнить линейное количество операций с итераторами для перебора элементов последовательности.