The Wayback Machine - https://web.archive.org/web/20180508012648/http://ja.cppreference.com:80/w/cpp/algorithm/for_each
名前空間
変種
操作

std::for_each

提供: cppreference.com
< cpp‎ | algorithm

 
 
アルゴリズムライブラリ
実行ポリシー (C++17)
非変更シーケンス操作
(C++11)(C++11)(C++11)
for_each
(C++17)
変更シーケンス操作
未初期化記憶域の操作
分割操作
ソート操作
バイナリサーチ操作
集合操作 (ソート済み範囲に対する)
ヒープ操作
(C++11)
最小/最大演算
(C++11)
(C++17)
順列
数値演算
C のライブラリ
 
ヘッダ <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.

目次

[編集]パラメータ

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.
型の要件
-
InputItInputIterator の要件を満たさなければなりません。
-
UnaryFunctionMoveConstructible の要件を満たさなければなりません。 Does not have to be CopyConstructible

[編集]値を返します

f. (C++11以前)
std::move(f). (C++11およびそれ以降)

[編集]複雑性

まさにlast - firstfのアプリケーション
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.

[編集]可能な実装

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.

#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

[編集]参照

指定範囲の要素に関数を適用します
(関数テンプレート)[edit]
レンジ用のループ
レンジ(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.
[edit]
close