std::experimental::ranges:: for_each
|
Definido en el encabezado
<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
)
(es decir,
ranges::
invoke
(
f,
ranges::
invoke
(
proj,
*
i
)
)
), en orden.
Para ambas sobrecargas, si el tipo de iterador es mutable, f puede modificar los elementos del rango a través del iterador desreferenciado. Si f devuelve un resultado, el resultado se ignora.
A diferencia del resto de los algoritmos, a for_each no se le permite hacer copias de los elementos en la secuencia incluso si son trivialmente copiables.
A diferencia de
std::for_each
(que solo requiere
MoveConstructible
), estas funciones requieren que
Fun
cumpla con
CopyConstructible
.
No obstante las declaraciones representadas anteriormente, el número real y el orden de los parámetros de plantilla para las declaraciones de algoritmos no está especificado. Por lo tanto, si se utilizan argumentos de plantilla explícitos al llamar a un algoritmo, el programa probablemente no sea portable.
ContenidoParámetros
Valor de retorno
Un objeto
ComplejidadExactamente last - first aplicaciones de f y proj . Implementación posible
Ejemplo
Véase también
|