plusは、C++標準ライブラリの標準関数オブジェクトのひとつで、加算を行う関数オブジェクト・・・。
ベクターvec1とベクターvec2の要素を足して、その値をベクターvec3に追加、というのを繰り返してみる・・・。
C++の標準関数オブジェクトを使う場合は、functionalをインクルードする・・・。
関数のプロトタイプ宣言・・・。
vec1とvec2のループ処理をするfor_each_plus・・・。
ここに関数オブジェクトも渡す・・・。
for_each_plusの定義・・・。
vec1とvec2の要素数が同じなら実行する・・・。
vec1のイテレータitor1の参照先の値と、vec2のイテレータitor2の参照先の値を、関数オブジェクトobjに渡す・・・。
objが加算をしてくれるので、結果をvec3にpush_backで追加していく・・・。
これをitor1の終わりまで繰り返す・・・。(vec1とvec2の要素数は同じなのでitor2も終わりに到達する・・・。)
std::vector<int>型のvec1, vec2, それに結果を格納するvec3, 標準関数オブジェクトstd::plus<int>型のplusを用意・・・。
vec1に奇数を追加・・・。
vec2に偶数を追加・・・。
for_each_plusで各要素の足し合わせ・・・。
結果はvec3に格納される・・・。
vec3の中身を出力・・・。
$ vi plus.cpp $ g++ plus.cpp -o plus $ ./plus *itor = 3 *itor = 7 *itor = 11 *itor = 15 *itor = 19 $
vec1とvec2の各要素が足し合わさって、vec3の各要素になっている・・・。
Sample/cpp/plus/plus/src/plus at master · bg1bgst333/Sample · GitHub