std::experimental::ranges:: for_each
|
Определено в заголовочном файле
<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
)
(т.е.
ranges::
invoke
(
f,
ranges::
invoke
(
proj,
*
i
)
)
), в порядке следования.
Для обеих перегрузок, если тип итератора является изменяемым, f может изменять элементы диапазона через разыменованный итератор. Если f возвращает результат, он игнорируется.
В отличие от остальных алгоритмов, for_each не разрешено создавать копии элементов в последовательности, даже если они тривиально копируемы.
В отличие от
std::for_each
(который требует только
MoveConstructible
), эти функции требуют, чтобы
Fun
соответствовал концепции
CopyConstructible
.
Несмотря на приведённые выше объявления, фактическое количество и порядок параметров шаблона для объявлений алгоритмов не определено. Таким образом, если при вызове алгоритма используются явные аргументы шаблона, программа, вероятно, является непереносимой.
СодержаниеПараметры
Возвращаемое значение
Объект
СложностьРовно last - first применений f и proj . Возможная реализация
Пример
См. также
|