std::experimental::ranges:: search_n
|
Определено в заголовке
<experimental/ranges/algorithm>
|
||
|
template
<
ForwardIterator I, Sentinel
<
I
>
S,
class
T,
class
Pred
=
ranges::
equal_to
<>
,
class
Proj
=
ranges::
identity
>
|
(1) | (ranges TS) |
|
template
<
ForwardRange R,
class
T,
class
Pred
=
ranges::
equal_to
<>
,
class
Proj
=
ranges::
identity
>
|
(2) | (ranges TS) |
[
first
,
last
)
первой последовательности из
count
элементов, спроецированные значения которых равны заданному значению
value
согласно предикату
pred
.
Содержание |
Параметры
| first, last | - | диапазон элементов для проверки |
| r | - | диапазон элементов для проверки |
| count | - | длина последовательности для поиска |
| value | - | значение для поиска |
| pred | - | предикат, сравнивающий проецируемые элементы с value |
| proj | - | проекция, применяемая к элементам |
Возвращаемое значение
Итератор на начало найденной последовательности в диапазоне
[
first
,
last
)
. Если такая последовательность не найдена, возвращается итератор, равный
last
.
Сложность
Не более last - first применений предиката и проекции.
Возможная реализация
template<ForwardIterator I, Sentinel<I> S, class T, class Pred = ranges::equal_to<>, class Proj = ranges::identity> requires IndirectlyComparable<I, const T*, Pred, Proj> I search_n(I first, S last, ranges::difference_type_t<I> count, const T& value, Pred pred = Pred{}, Proj proj = Proj{}) { for (; first != last; ++first) { if (!ranges::invoke(pred, ranges::invoke(proj, *first), value)) continue; I candidate = first; ranges::difference_type_t<I> cur_count = 0; while (true) { ++cur_count; if (cur_count == count) // успех return candidate; ++first; if (first == last) // список исчерпан return first; if (!ranges::invoke(pred, ranges::invoke(proj, *first), value)) // недостаточно подряд идущих элементов break; } { return first; } |
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
ищет первое вхождение заданного количества последовательных копий элемента в диапазоне
(function template) |
|
|
находит последнюю последовательность элементов в заданном диапазоне
(function template) |
|
|
находит первый элемент, удовлетворяющий определенным критериям
(function template) |
|
|
ищет диапазон элементов
(function template) |