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. Алгоритмы бинарного поиска
Хотя эти алгоритмы можно использовать с прямыми итераторами, они обладают специализированными версиями, которые работают с итераторами прямого доступа и выполняются гораздо быстрей.
Этим алгоритмам требуются
Эти алгоритмы требуют, чтобы элементы в исходной последовательности уже были упорядочены. Эти алгоритмы ведут себя подобно одноименным функциям-членам ассоциативных контейнеров (см. раздел 11.3.5).
Алгоритмы equal_range()
, lower_bound()
и upper_bound()
возвращают итераторы на позиции последовательности, куда мог бы быть вставлен заданный элемент при сохранении существующего порядка в последовательности. Если элемент больше всех остальных в последовательности, то возвращаемый итератор будет итератором после конца.
Каждый алгоритм предоставлен в двух версиях: первая использует для проверки элементов оператор меньше (<
) типа элемента, а вторая использует заданную функцию сравнения. В следующих алгоритмах "x
меньше, чем y
" означает, что выражения x
comp(x, y)
истинны:
lower_bound(beg, end, val)
lower_bound(beg, end, val, comp)
Возвращает итератор, обозначающий первый элемент, значение которого больше или равно значению val
, или итератор end
, если такого элемента нет.
upper_bound(beg, end, val)
upper_bound(beg, end, val, comp)
Возвращает итератор, обозначающий первый элемент, значение которого меньше значения val
, или итератор end
, если такого элемента нет.
equal_range(beg, end, val)
equal_range(beg, end, val, comp)
Возвращает пару (см. раздел 11.2.3), член first
которой является итератором, возвращаемым функцией lower_bound()
, а член second
— итератором, возвращаемым функцией upper_bound()
.
binary_search(beg, end, val)
binary_search(beg, end, val, comp)
Возвращает логическое значение, свидетельствующее о наличии в последовательности элемента, значение которого равно val
. Два значения, x
и y
, считаются равными, если x
не меньше y
и y
не меньше x
.
А.2.4. Алгоритмы записи в элементы контейнера