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) |
(ranges TS)
(устарело) |
|
template
<
ForwardRange R1,
class
I2,
class
Pred
=
ranges::
equal_to
<>
,
class
Proj1
=
ranges::
identity
,
class
Proj2
=
ranges::
identity
>
|
(4) |
(ranges TS)
(устарело) |
[
first1
,
last1
)
, которая делает диапазон равным
[
first2
,
last2
)
, и
false
в противном случае.
Два диапазона считаются равными, если они имеют одинаковое количество элементов и для каждого итератора
i
в диапазоне
[
first1
,
last1
)
,
ranges::
invoke
(
pred,
ranges::
invoke
(
proj1,
*
i
)
,
ranges::
invoke
(
proj2,
*
(
first2
+
(
i
-
first1
)
)
)
)
равно
true
.
Несмотря на приведённые выше объявления, фактическое количество и порядок параметров шаблона для объявлений алгоритмов не определено. Таким образом, если при вызове алгоритма используются явные аргументы шаблона, программа, вероятно, является непереносимой.
СодержаниеПараметры
Возвращаемое значение
true
если диапазон
СложностьНе более O(N 2 ) применений предиката и каждой проекции, или ровно N если последовательности уже равны, где N = last1 - first1 . Однако если SizedSentinel < S1, I1 > && SizedSentinel < S2, I2 > выполняется и last1 - first1 ! = last2 - first2 , никаких применений предиката и проекций не производится. Пример
См. также
|