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
)
내에서 투영된 값이 주어진 값
value
와 술어
pred
에 따라 동일한
count
개의 요소로 이루어진 첫 번째 시퀀스를 검색합니다.
목차 |
매개변수
| first, last | - | 검사할 요소들의 범위 |
| r | - | 검사할 요소들의 범위 |
| count | - | 검색할 시퀀스의 길이 |
| value | - | 검색할 값 |
| pred | - | 투영된 요소들을 value 와 비교하는 조건자 |
| proj | - | 요소들에 적용할 투영 |
반환값
범위 내에서 발견된 시퀀스의 시작을 가리키는 반복자
[
first
,
last
)
. 해당 시퀀스를 찾지 못한 경우,
last
와 동일하게 비교되는 반복자가 반환됩니다.
복잡도
최대 last - first 번의 술어(predicate)와 투영(projection) 적용.
가능한 구현
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) |