std::experimental::ranges:: is_permutation
|
Definiert im Header
<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)
(veraltet) |
|
template
<
ForwardRange R1,
class
I2,
class
Pred
=
ranges::
equal_to
<>
,
class
Proj1
=
ranges::
identity
,
class
Proj2
=
ranges::
identity
>
|
(4) |
(ranges TS)
(veraltet) |
[
first1
,
last1
)
existiert, die den Bereich gleich
[
first2
,
last2
)
macht, andernfalls
false
.
Zwei Bereiche werden als gleich betrachtet, wenn sie die gleiche Anzahl an Elementen haben und für jeden Iterator
i
im Bereich
[
first1
,
last1
)
,
ranges::
invoke
(
pred,
ranges::
invoke
(
proj1,
*
i
)
,
ranges::
invoke
(
proj2,
*
(
first2
+
(
i
-
first1
)
)
)
)
gleich
true
ist.
Ungeachtet der oben dargestellten Deklarationen sind die tatsächliche Anzahl und Reihenfolge der Template-Parameter für Algorithmusdeklarationen nicht spezifiziert. Daher ist das Programm wahrscheinlich nicht portabel, wenn explizite Template-Argumente beim Aufruf eines Algorithmus verwendet werden.
Inhaltsverzeichnis |
Parameter
| first1, last1 | - | der erste Bereich der Elemente |
| r1 | - | der erste Bereich der Elemente |
| first2, last2 | - | der zweite Bereich der Elemente |
| r2 | - | der zweite Bereich der Elemente |
| first2_ | - | der Anfang des zweiten Bereichs der Elemente |
| pred | - | Prädikat, das auf die projizierten Elemente angewendet wird |
| proj1 | - | Projektion, die auf die Elemente im ersten Bereich angewendet wird |
| proj2 | - | Projektion, die auf die Elemente im zweiten Bereich angewendet wird |
Rückgabewert
true
falls der Bereich
[
first1
,
last1
)
eine Permutation des Bereichs
[
first2
,
last2
)
ist.
Komplexität
Höchstens O(N 2 ) Anwendungen des Prädikats und jeder Projektion, oder genau N wenn die Sequenzen bereits gleich sind, wobei N = last1 - first1 .
Wenn jedoch SizedSentinel < S1, I1 > && SizedSentinel < S2, I2 > erfüllt ist und last1 - first1 ! = last2 - first2 , werden keine Anwendungen des Prädikats und der Projektionen durchgeführt.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
(C++11)
|
bestimmt, ob eine Sequenz eine Permutation einer anderen Sequenz ist
(Funktions-Template) |
|
erzeugt die nächstgrößere lexikografische Permutation eines Elementbereichs
(Funktions-Template) |
|
|
erzeugt die nächstkleinere lexikografische Permutation eines Elementbereichs
(Funktions-Template) |