std::experimental::ranges:: is_permutation
|
헤더에 정의됨
<experimental/ranges/algorithm>
|
||
|
template
<
ForwardIterator I1, Sentinel
<
I1
>
S1, ForwardIterator I2, Sentinel
<
I2
>
S2,
class
Pred
=
ranges::
equal_to
<>
,
|
(1) | (ranges TS) |
|
template
<
ForwardRange R1, ForwardRange R2,
class
Pred
=
ranges::
equal_to
<>
,
class
Proj1
=
ranges::
identity
,
class
Proj2
=
ranges::
identity
>
|
(2) | (ranges TS) |
|
template
<
ForwardIterator I1, Sentinel
<
I1
>
S1,
class
I2,
class
Pred
=
ranges::
equal_to
<>
,
|
(3) |
(범위 TS)
(사용 중단됨) |
|
template
<
ForwardRange R1,
class
I2,
class
Pred
=
ranges::
equal_to
<>
,
class
Proj1
=
ranges::
identity
,
class
Proj2
=
ranges::
identity
>
|
(4) |
(범위 TS)
(사용 중단됨) |
[
first1
,
last1
)
의 요소들을 순열하여 범위
[
first2
,
last2
)
와 동일하게 만들 수 있으면
true
를 반환하고, 그렇지 않으면
false
를 반환합니다.
두 범위는 동일한 수의 요소를 가지고, 범위
[
first1
,
last1
)
내의 모든 반복자
i
에 대해
ranges::
invoke
(
pred,
ranges::
invoke
(
proj1,
*
i
)
,
ranges::
invoke
(
proj2,
*
(
first2
+
(
i
-
first1
)
)
)
)
가
true
인 경우 동일한 것으로 간주됩니다.
위에 기술된 선언들과는 별개로, 알고리즘 선언에 대한 실제 템플릿 매개변수의 개수와 순서는 명시되지 않습니다. 따라서 알고리즘을 호출할 때 명시적 템플릿 인수를 사용하는 경우, 해당 프로그램은 이식성이 없을 가능성이 높습니다.
목차 |
매개변수
| first1, last1 | - | 첫 번째 요소 범위 |
| r1 | - | 첫 번째 요소 범위 |
| first2, last2 | - | 두 번째 요소 범위 |
| r2 | - | 두 번째 요소 범위 |
| first2_ | - | 두 번째 요소 범위의 시작점 |
| pred | - | 투영된 요소에 적용할 조건자 |
| proj1 | - | 첫 번째 범위의 요소에 적용할 투영 |
| proj2 | - | 두 번째 범위의 요소에 적용할 투영 |
반환값
true
를 반환합니다, 만약 범위
[
first1
,
last1
)
가 범위
[
first2
,
last2
)
의 순열(permutation)인 경우.
복잡도
최대 O(N 2 ) 번의 술어 및 각 프로젝션 적용, 또는 시퀀스가 이미 동일한 경우 정확히 N 번 적용됩니다. 여기서 N = last1 - first1 입니다.
그러나 만약 SizedSentinel < S1, I1 > && SizedSentinel < S2, I2 > 가 만족되고 last1 - first1 ! = last2 - first2 인 경우, 술어와 투영 함수의 적용이 이루어지지 않습니다.
예제
|
이 섹션은 불완전합니다
이유: 예제가 없음 |
참고 항목
|
(C++11)
|
시퀀스가 다른 시퀀스의 순열인지 판단합니다
(함수 템플릿) |
|
요소 범위의 다음으로 큰 사전식 순열을 생성합니다
(함수 템플릿) |
|
|
요소 범위의 다음으로 작은 사전식 순열을 생성합니다
(함수 템플릿) |