std::experimental::ranges:: find_end
|
Definiert in Header
<experimental/ranges/algorithm>
|
||
|
template
<
ForwardIterator I1, Sentinel
<
I1
>
S1, ForwardIterator I2, Sentinel
<
I2
>
S2,
class
Proj
=
ranges::
identity
,
|
(1) | (ranges TS) |
|
template
<
ForwardRange R1, ForwardRange R2,
class
Proj
=
ranges::
identity
,
IndirectRelation
<
ranges::
iterator_t
<
R2
>
,
|
(2) | (ranges TS) |
[
first2
,
last2
)
im Bereich
[
first1
,
last1
)
(nach Projektion mit
proj
).
Ungeachtet der oben dargestellten Deklarationen sind die tatsächliche Anzahl und Reihenfolge der Template-Parameter für Algorithmusdeklarationen nicht spezifiziert. Daher ist ein Programm wahrscheinlich nicht portabel, wenn explizite Template-Argumente beim Aufruf eines Algorithmus verwendet werden.
Inhaltsverzeichnis |
Parameter
| first1, last1 | - | der Bereich der zu untersuchenden Elemente |
| r1 | - | der Bereich der zu untersuchenden Elemente |
| first2, last2 | - | der Bereich der zu durchsuchenden Elemente |
| r2 | - | der Bereich der zu durchsuchenden Elemente |
| pred | - | Prädikat zum Vergleichen der Elemente |
| proj | - | Projektion zur Anwendung auf die Elemente im ersten Bereich |
Rückgabewert
Iterator zum Anfang des letzten Vorkommens der Sequenz
[
first2
,
last2
)
im Bereich
[
first1
,
last1
)
(nach Projektion mit
proj
).
Falls
[
first2
,
last2
)
leer ist oder keine solche Sequenz gefunden wird, wird ein Iterator zurückgegeben, der gleich
last1
ist.
Komplexität
Höchstens
S * (N - S + 1)
Anwendungen des Prädikats und der Projektion, wobei
S
=
last2
-
first2
und
N
=
last1
-
first1
.
Hinweise
Die Projektion wird nur auf den Bereich
[
first1
,
last1
)
angewendet.
Mögliche Implementierung
template<ForwardIterator I1, Sentinel<I1> S1, ForwardIterator I2, Sentinel<I2> S2, class Proj = ranges::identity, IndirectRelation<I2, projected<I1, Proj>> Pred = ranges::equal_to<>> I1 find_end(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred = Pred{}, Proj proj = Proj{}) { I1 result = ranges::next(first1, last1); if (first2 == last2) return result; while (true) { I1 new_result = ranges::search(first1, last1, first2, last2, pred, proj); if (new_result == last1) break; else { result = new_result; first1 = result; ++first1; } } return result; } |
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
findet die letzte Sequenz von Elementen in einem bestimmten Bereich
(Funktions-Template) |
|
|
sucht nach einem Bereich von Elementen
(Funktions-Template) |
|
|
gibt
true
zurück, falls eine Menge eine Teilmenge einer anderen ist
(Funktions-Template) |
|
|
findet die ersten zwei benachbarten Elemente, die gleich sind (oder ein gegebenes Prädikat erfüllen)
(Funktions-Template) |
|
|
findet das erste Element, das spezifische Kriterien erfüllt
(Funktions-Template) |
|
|
sucht nach einem beliebigen Element aus einer Menge von Elementen
(Funktions-Template) |
|
|
sucht nach einer Anzahl aufeinanderfolgender Kopien eines Elements in einem Bereich
(Funktions-Template) |