std::for_each
提供: cppreference.com
![]() | このページは、Google 翻訳を使って英語版から機械翻訳されました。 翻訳には誤りや奇妙な言い回しがあるかもしれません。文章の上にポインタをおくと、元の文章が見れます。誤りを修正して翻訳を改善する手助けをしてください。翻訳についての説明は、ここをクリックしてください。 |
ヘッダ <algorithm> で定義 | ||
template<class InputIt, class UnaryFunction > UnaryFunction for_each( InputIt first, InputIt last, UnaryFunction f ); | ||
ためには、範囲内のすべての
f
イテレータをデリファレンスした結果に指定した関数オブジェクト[first, last)
を適用します。 InputIt
がmutableイテレータであれば、f
は間接参照イテレータを範囲の要素を変更することがあります。 f
が結果を返す場合、結果は無視されます.Original:
Applies the given function object
f
to the result of dereferencing every iterator in the range [first, last)
, in order. If InputIt
is a mutable iterator, f
may modify the elements of the range through the dereferenced iterator. If f
returns a result, the result is ignored.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
目次 |
[編集]パラメータ
first, last | - | に関数を適用する範囲 Original: the range to apply the function to The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
f | - | 適用する単項関数オブジェクト Original: the unary function object to be applied The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
型の要件 | ||
-InputIt は InputIterator の要件を満たさなければなりません。 | ||
-UnaryFunction は MoveConstructible の要件を満たさなければなりません。 Does not have to be CopyConstructible |
[編集]値を返します
f
. (C++11以前)
std::move(f). (C++11およびそれ以降)
[編集]複雑性
まさに
last
- first
f
のアプリケーションOriginal:
Exactly
last
- first
applications of f
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集]可能な実装
template<class InputIt, class UnaryFunction> UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f){for(; first != last;++first){ f(*first);}return f;} |
[編集]例
次の例では、ベクトルのすべての要素をインクリメントするラムダ関数を使用し、次に、それらの合計を計算します
Original:
The following example uses a ラムダ関数 to increment all of the elements of a vector and then computes a sum of them:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Run this code
#include <vector>#include <algorithm>#include <iostream> struct Sum { Sum(){ sum =0;}void operator()(int n){ sum += n;} int sum;}; int main(){std::vector<int> nums{3, 4, 2, 9, 15, 267}; std::cout<<"before: ";for(auto n : nums){std::cout<< n <<" ";}std::cout<<'\n'; std::for_each(nums.begin(), nums.end(), [](int&n){ n++;}); Sum s = std::for_each(nums.begin(), nums.end(), Sum()); std::cout<<"after: ";for(auto n : nums){std::cout<< n <<" ";}std::cout<<'\n';std::cout<<"sum: "<< s.sum<<'\n';}
出力:
before: 3 4 2 9 15 267 after: 4 5 3 10 16 268 sum: 306
[編集]参照
指定範囲の要素に関数を適用します (関数テンプレート) | |
レンジ用のループ | レンジ(C++11およびそれ以降)にわたってループを実行する Original: executes loop over range (C++11およびそれ以降) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |