std::experimental::ranges:: search
|
Défini dans l'en-tête
<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) |
[
first2
,
last2
)
dans la plage
[
first1
,
last1
)
. Les éléments sont comparés en utilisant
pred
après avoir été projetés avec
proj2
et
proj1
, respectivement.
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 à appliquer aux éléments projetés |
| proj1 | - | projection à appliquer aux éléments de la première plage |
| proj2 | - | projection à appliquer aux éléments de la deuxième plage |
Valeur de retour
Un itérateur vers le début de la première occurrence de la séquence
[
first2
,
last2
)
dans la plage
[
first1
,
last1
)
. Si
[
first2
,
last2
)
est vide,
first1
est retourné. Si aucune occurrence n'est trouvée, un itérateur égal à
last1
est retourné.
Complexité
Au plus
S * N
applications du prédicat et de chaque projection, où
S
=
last2
-
first2
et
N
=
last1
-
first1
.
Implémentation possible
template<ForwardIterator I1, Sentinel<I1> S1, ForwardIterator I2, Sentinel<I2> S2, class Pred = ranges::equal_to<>, class Proj1 = ranges::identity, class Proj2 = ranges::identity> requires IndirectlyComparable<I1, I2, Pred, Proj1, Proj2> I1 search(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred = Pred{}, Proj1 proj1 = Proj1{}, Proj2 proj2 = Proj2{}) { for (; ; ++first1) { I1 it = first1; for (I2 it2 = first2; ; (void)++it, (void)++it2) { if (it2 == last2) return first1; if (it == last1) return it; if (!ranges::invoke(pred, ranges::invoke(proj1, *it), ranges::invoke(proj2, *it2))) break; } } } |
` et ``, et les termes spécifiques au C++ doivent être préservés. Seul le texte environnant (s'il y en avait) aurait été traduit en français.
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
recherche la première occurrence d'une plage d'éléments
(modèle de fonction) |
|
|
trouve la dernière séquence d'éléments dans une plage donnée
(modèle de fonction) |
|
|
renvoie
true
si un ensemble est un sous-ensemble d'un autre
(modèle de fonction) |
|
|
détermine si deux ensembles d'éléments sont identiques
(modèle de fonction) |
|
|
trouve le premier élément satisfaisant des critères spécifiques
(modèle de fonction) |
|
|
renvoie
true
si une plage est lexicographiquement inférieure à une autre
(modèle de fonction) |
|
|
trouve la première position où deux plages diffèrent
(modèle de fonction) |
|
|
recherche un nombre de copies consécutives d'un élément dans une plage
(modèle de fonction) |