読者です 読者をやめる 読者になる 読者になる

for_each

C++

for_eachは、C++標準ライブラリのSTLアルゴリズムのひとつで、指定されたコレクション(配列やベクタ、リストなど)の各要素ごとに指定された関数オブジェクトを実行するテンプレート関数・・・。

for_each - C++ Reference

STLにおけるアルゴリズムは、本来のアルゴリズムの意味と少し違い、指定されたイテレータの範囲内でコンテナに特定の操作を行うための関数・・・。

これまでも関数オブジェクトの繰り返し処理では、for_each~なる関数を定義してきたが、標準アルゴリズムにfor_eachがあるので、これを使う・・・。

for_each.hには、渡された参照の値を2倍にする関数オブジェクトclass_twiceの定義・・・。

標準アルゴリズムを使う場合は、algorithmをインクルード・・・。

for_eachで指定した範囲のイテレータの参照先の値が、関数オブジェクトの引数として参照渡しされてくるので、それを2倍にする・・・。

std::vector型のvec、class_twice型の関数オブジェクトobjを用意・・・。

vecにpush_backで1から5まで追加・・・。

for_eachアルゴリズムで、vec.begin()からvec.end()までobjを実行・・・。
objにはvec各要素の参照が引数として渡され、関数オブジェクトの中で値を2倍にする・・・。

改めてvecの中身を出力・・・。

$ vi for_each.cpp
$ g++ for_each.cpp -o for_each
$ ./for_each
*itor = 2
*itor = 4
*itor = 6
*itor = 8
*itor = 10
$

vecの値が全て2倍になった・・・。

Sample/cpp/for_each/for_each/src/for_each at master · bg1bgst333/Sample · GitHub