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
)
内の各イテレータをデリファレンスした値に射影
proj
を適用した結果に対して順次呼び出す(すなわち、
ranges::
invoke
(
f,
ranges::
invoke
(
proj,
*
i
)
)
を順に実行する)。
両方のオーバーロードにおいて、イテレータ型がmutableの場合、 f はデリファレンスされたイテレータを通じて範囲の要素を変更することができます。 f が結果を返す場合、その結果は無視されます。
他のアルゴリズムとは異なり、for_eachは要素が自明にコピー可能であっても、シーケンス内の要素のコピーを作成することが許可されていません。
std::for_each
とは異なり(
MoveConstructible
のみを要求します)、これらの関数は
Fun
が
CopyConstructible
をモデル化することを要求します。
上記に示された宣言にもかかわらず、アルゴリズム宣言の実際のテンプレートパラメータの数と順序は未規定です。したがって、アルゴリズムを呼び出す際に明示的なテンプレート引数を使用する場合、プログラムはおそらく移植性がありません。
目次パラメータ
戻り値
A
計算量正確に last - first 回の f および proj の適用。 実装例
例
関連項目
|