std::experimental::ranges::is_permutation
| Definiert in 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) gibt, die den Bereich gleich [first2, last2) macht, und false andernfalls.Zwei Bereiche werden als gleich betrachtet, wenn sie die gleiche Anzahl von Elementen haben und für jeden Iterator i im Bereich [first1, last1) gilt: ranges::invoke(pred, ranges::invoke(proj1, *i), ranges::invoke(proj2, *(first2 + (i - first1)))) ist true.
Ungeachtet der oben gezeigten Deklarationen ist die tatsächliche Anzahl und Reihenfolge der Template-Parameter für Algorithmusdeklarationen nicht spezifiziert. Wenn also explizite Template-Argumente beim Aufruf eines Algorithmus verwendet werden, ist das Programm wahrscheinlich nicht portabel.
Inhalt |
[bearbeiten] 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 |
[bearbeiten] Rückgabewert
true, wenn der Bereich [first1, last1) eine Permutation des Bereichs [first2, last2) ist.
[bearbeiten] Komplexität
Höchstens O(N2) Anwendungen des Prädikats und jeder Projektion, oder exakt 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.
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| (C++11) |
bestimmt, ob eine Sequenz eine Permutation einer anderen Sequenz ist (Funktionsvorlage) |
| erzeugt die nächstgrößere lexikographische Permutation eines Bereichs von Elementen (Funktionsvorlage) | |
| erzeugt die nächstkleinere lexikographische Permutation eines Bereichs von Elementen (Funktionsvorlage) |