std::experimental::ranges:: find_end
|
Определено в заголовочном файле
<experimental/ranges/algorithm>
|
||
|
template
<
ForwardIterator I1, Sentinel
<
I1
>
S1, ForwardIterator I2, Sentinel
<
I2
>
S2,
class
Proj
=
ranges::
identity
,
|
(1) | (ranges TS) |
|
template
<
ForwardRange R1, ForwardRange R2,
class
Proj
=
ranges::
identity
,
IndirectRelation
<
ranges::
iterator_t
<
R2
>
,
|
(2) | (ranges TS) |
[
first2
,
last2
)
в диапазоне
[
first1
,
last1
)
(после проекции с помощью
proj
).
Несмотря на приведённые выше объявления, фактическое количество и порядок параметров шаблона для объявлений алгоритмов не определено. Таким образом, если при вызове алгоритма используются явные аргументы шаблона, программа, вероятно, является непереносимой.
Содержание |
Параметры
| first1, last1 | - | диапазон элементов для проверки |
| r1 | - | диапазон элементов для проверки |
| first2, last2 | - | диапазон элементов для поиска |
| r2 | - | диапазон элементов для поиска |
| pred | - | предикат для сравнения элементов |
| proj | - | проекция для применения к элементам первого диапазона |
Возвращаемое значение
Итератор на начало последнего вхождения последовательности
[
first2
,
last2
)
в диапазон
[
first1
,
last1
)
(после проекции с
proj
).
Если
[
first2
,
last2
)
является пустым диапазоном или если такая последовательность не найдена, возвращается итератор, равный
last1
.
Сложность
Не более
S * (N - S + 1)
применений предиката и проекции, где
S
=
last2
-
first2
и
N
=
last1
-
first1
.
Примечания
Проекция применяется только к диапазону
[
first1
,
last1
)
.
Возможная реализация
template<ForwardIterator I1, Sentinel<I1> S1, ForwardIterator I2, Sentinel<I2> S2, class Proj = ranges::identity, IndirectRelation<I2, projected<I1, Proj>> Pred = ranges::equal_to<>> I1 find_end(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred = Pred{}, Proj proj = Proj{}) { I1 result = ranges::next(first1, last1); if (first2 == last2) return result; while (true) { I1 new_result = ranges::search(first1, last1, first2, last2, pred, proj); if (new_result == last1) break; else { result = new_result; first1 = result; ++first1; } } return result; } |
` и `` оставлен без изменений, как и требовалось. HTML-теги и атрибуты также сохранены в оригинальном виде.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
находит последнюю последовательность элементов в заданном диапазоне
(шаблон функции) |
|
|
выполняет поиск диапазона элементов
(шаблон функции) |
|
|
возвращает
true
если одно множество является подмножеством другого
(шаблон функции) |
|
|
находит первые два соседних элемента, которые равны (или удовлетворяют заданному предикату)
(шаблон функции) |
|
|
находит первый элемент, удовлетворяющий определенным критериям
(шаблон функции) |
|
|
выполняет поиск любого элемента из заданного набора
(шаблон функции) |
|
|
выполняет поиск заданного количества последовательных копий элемента в диапазоне
(шаблон функции) |