std::experimental::ranges:: for_each
|
Défini dans l'en-tête
<experimental/ranges/algorithm>
|
||
|
template
<
InputIterator I, Sentinel
<
I
>
S,
class
Proj
=
ranges::
identity
,
IndirectUnaryInvocable
<
projected
<
I, Proj
>>
Fun
>
|
(1) | (ranges TS) |
|
template
<
InputRange R,
class
Proj
=
ranges::
identity
,
IndirectUnaryInvocable
<
projected
<
ranges::
iterator_t
<
R
>
, Proj
>>
Fun
>
|
(2) | (ranges TS) |
[
first
,
last
)
(c'est-à-dire,
ranges::
invoke
(
f,
ranges::
invoke
(
proj,
*
i
)
)
), dans l'ordre.
Pour les deux surcharges, si le type d'itérateur est mutable, f peut modifier les éléments de la plage via l'itérateur déréférencé. Si f retourne un résultat, ce résultat est ignoré.
Contrairement aux autres algorithmes, for_each n'est pas autorisé à effectuer des copies des éléments de la séquence, même s'ils sont trivialement copiables.
Contrairement à
std::for_each
(qui nécessite seulement
MoveConstructible
), ces fonctions exigent que
Fun
modélise
CopyConstructible
.
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.
ContenuParamètres
Valeur de retour
Un objet
ComplexitéExactement last - first applications de f et proj . Implémentation possible
Exemple
Voir aussi
|