std::experimental::ranges:: find_end
|
Défini dans l'en-tête
<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
)
dans la plage
[
first1
,
last1
)
(après projection avec
proj
).
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 plage d'éléments à examiner |
| r1 | - | la plage d'éléments à examiner |
| first2, last2 | - | la plage d'éléments à rechercher |
| r2 | - | la plage d'éléments à rechercher |
| pred | - | prédicat pour comparer les éléments |
| proj | - | projection à appliquer aux éléments de la première plage |
Valeur de retour
Itérateur vers le début de la dernière occurrence de la séquence
[
first2
,
last2
)
dans la plage
[
first1
,
last1
)
(après projection avec
proj
).
Si
[
first2
,
last2
)
est vide ou si aucune telle séquence n'est trouvée, un itérateur qui compare égal à
last1
est retourné.
Complexité
Au plus
S * (N - S + 1)
applications du prédicat et de la projection, où
S
=
last2
-
first2
et
N
=
last1
-
first1
.
Notes
La projection n'est appliquée qu'à la plage
[
first1
,
last1
)
.
Implémentation possible
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; } |
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
trouve la dernière séquence d'éléments dans une certaine plage
(modèle de fonction) |
|
|
recherche une plage d'éléments
(modèle de fonction) |
|
|
retourne
true
si un ensemble est un sous-ensemble d'un autre
(modèle de fonction) |
|
|
trouve les deux premiers éléments adjacents qui sont égaux (ou satisfont un prédicat donné)
(modèle de fonction) |
|
|
trouve le premier élément satisfaisant des critères spécifiques
(modèle de fonction) |
|
|
recherche l'un quelconque d'un ensemble d'éléments
(modèle de fonction) |
|
|
recherche un nombre de copies consécutives d'un élément dans une plage
(modèle de fonction) |