std::experimental::ranges:: mismatch
|
Definiert im Header
<experimental/ranges/algorithm>
|
||
|
template
<
InputIterator I1, Sentinel
<
I1
>
S1, InputIterator I2, Sentinel
<
I2
>
S2,
class
Proj1
=
ranges::
identity
,
class
Proj2
=
ranges::
identity
,
|
(1) | (ranges TS) |
|
template
<
InputRange R1, InputRange R2,
class
Proj1
=
ranges::
identity
,
class
Proj2
=
ranges::
identity
,
|
(2) | (ranges TS) |
|
template
<
InputIterator I1, Sentinel
<
I1
>
S1,
class
I2,
class
Pred
=
ranges::
equal_to
<>
,
|
(3) |
(ranges TS)
(veraltet) |
|
template
<
InputRange R1,
class
I2,
class
Pred
=
ranges::
equal_to
<>
,
class
Proj1
=
ranges::
identity
,
class
Proj2
=
ranges::
identity
>
|
(4) |
(ranges TS)
(veraltet) |
[
first1
,
last1
)
und ein anderer definiert durch
[
first2
,
last2
)
.
Elemente werden mit pred verglichen, angewendet auf die projizierten Elemente der beiden Bereiche, als ob durch ranges:: invoke ( pred, ranges:: invoke ( proj1, * i ) , ranges:: invoke ( proj2, * j ) ) .
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
Ein
tagged_pair
-Objekt mit Iteratoren zu den ersten beiden ungleichen Elementen (der Iterator aus dem ersten Bereich hat das Tag
in1
und der Iterator aus dem zweiten Bereich hat das Tag
in2
).
Wenn beim Vergleich bis last1 oder last2 , je nachdem was zuerst eintritt, keine Nichtübereinstimmungen gefunden werden, enthält das Paar den End-Iterator und den entsprechenden Iterator aus dem anderen Bereich.
Komplexität
Höchstens last1 - first1 Anwendungen des Prädikats und jeder Projektion.
Mögliche Implementierung
template<InputIterator I1, Sentinel<I1> S1, InputIterator I2, Sentinel<I2> S2, class Proj1 = ranges::identity, class Proj2 = ranges::identity, class Pred = ranges::equal_to<>> requires IndirectRelation<Pred, projected<I1, Proj1>, projected<I2, Proj2>> auto mismatch(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred = Pred{}, Proj1 proj1 = Proj1{}, Proj2 proj2 = Proj2{}) -> ranges::tagged_pair<tag::in1(I1), tag::in2(I2)> { while (first1 != last1 && first2 != last2 && ranges::invoke(pred, ranges::invoke(proj1, *first1), ranges::invoke(proj2, *first2))) { ++first1; ++first2; } return {first1, first2}; } |
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
findet die erste Position, an der zwei Bereiche sich unterscheiden
(Funktions-Template) |
|
|
bestimmt, ob zwei Elementgruppen identisch sind
(Funktions-Template) |
|
|
findet das erste Element, das spezifische Kriterien erfüllt
(Funktions-Template) |
|
|
gibt
true
zurück, falls ein Bereich lexikographisch kleiner als ein anderer ist
(Funktions-Template) |
|
|
sucht nach einem Bereich von Elementen
(Funktions-Template) |