std::experimental::ranges:: is_permutation
|
Défini dans l'en-tête
<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)
(obsolète) |
|
template
<
ForwardRange R1,
class
I2,
class
Pred
=
ranges::
equal_to
<>
,
class
Proj1
=
ranges::
identity
,
class
Proj2
=
ranges::
identity
>
|
(4) |
(ranges TS)
(obsolète) |
[
first1
,
last1
)
qui rend l'intervalle égal à
[
first2
,
last2
)
, et
false
sinon.
Deux plages sont considérées égales si elles ont le même nombre d'éléments et si, pour chaque itérateur
i
dans la plage
[
first1
,
last1
)
,
ranges::
invoke
(
pred,
ranges::
invoke
(
proj1,
*
i
)
,
ranges::
invoke
(
proj2,
*
(
first2
+
(
i
-
first1
)
)
)
)
est
true
.
Nonobstant les déclarations dépeintes ci-dessus, le nombre réel et l'ordre des paramètres de template pour les déclarations d'algorithmes ne sont pas spécifiés. Ainsi, si des arguments de template explicites sont utilisés lors de l'appel d'un algorithme, le programme est probablement non portable.
Table des matières |
Paramètres
| first1, last1 | - | la première plage des éléments |
| r1 | - | la première plage des éléments |
| first2, last2 | - | la deuxième plage des éléments |
| r2 | - | la deuxième plage des éléments |
| first2_ | - | le début de la deuxième plage des éléments |
| pred | - | prédicat à appliquer aux éléments projetés |
| proj1 | - | projection à appliquer aux éléments de la première plage |
| proj2 | - | projection à appliquer aux éléments de la deuxième plage |
Valeur de retour
true
si la plage
[
first1
,
last1
)
est une permutation de la plage
[
first2
,
last2
)
.
Complexité
Au plus O(N 2 ) applications du prédicat et de chaque projection, ou exactement N si les séquences sont déjà égales, où N = last1 - first1 .
Cependant si SizedSentinel < S1, I1 > && SizedSentinel < S2, I2 > est satisfait et last1 - first1 ! = last2 - first2 , aucune application du prédicat et des projections n'est effectuée.
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
(C++11)
|
détermine si une séquence est une permutation d'une autre séquence
(modèle de fonction) |
|
génère la prochaine permutation lexicographique supérieure d'une plage d'éléments
(modèle de fonction) |
|
|
génère la prochaine permutation lexicographique inférieure d'une plage d'éléments
(modèle de fonction) |