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
.
Несмотря на приведённые выше объявления, фактическое количество и порядок параметров шаблона для объявлений алгоритмов не определено. Таким образом, если при вызове алгоритма используются явные аргументы шаблона, программа, вероятно, является непереносимой.
Содержание |
Параметры
| first1, last1 | - | первый диапазон элементов |
| r1 | - | первый диапазон элементов |
| first2, last2 | - | второй диапазон элементов |
| r2 | - | второй диапазон элементов |
| first2_ | - | начало второго диапазона элементов |
| pred | - | предикат, применяемый к проецируемым элементам |
| proj1 | - | проекция, применяемая к элементам первого диапазона |
| proj2 | - | проекция, применяемая к элементам второго диапазона |
Возвращаемое значение
true
если диапазон
[
first1
,
last1
)
является перестановкой диапазона
[
first2
,
last2
)
.
Сложность
Не более O(N 2 ) применений предиката и каждой проекции, или ровно N если последовательности уже равны, где N = last1 - first1 .
Однако если SizedSentinel < S1, I1 > && SizedSentinel < S2, I2 > выполняется и last1 - first1 ! = last2 - first2 , никаких применений предиката и проекций не производится.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
(C++11)
|
определяет, является ли последовательность перестановкой другой последовательности
(шаблон функции) |
|
генерирует следующую большую лексикографическую перестановку диапазона элементов
(шаблон функции) |
|
|
генерирует следующую меньшую лексикографическую перестановку диапазона элементов
(шаблон функции) |