2018年02月23日
《その304》 関数テンプレート for_each
関数テンプレート for_each
関数テンプレート for_each は、<algorithm>ヘッダで定義されている関数テンプレートです。
template <class InputIterator, class Function>
Function for_each(InputIterator first, InputIterator last, Function f);
Function for_each(InputIterator first, InputIterator last, Function f);
この関数テンプレート for_each は、first の指す要素から lastの指す要素の直前の要素までの
(last - first)個の要素の一つひとつに ファンクタ f を適用しながら、各要素を順に走査します。
下記のプログラムは、関数テンプレート for_each のはたらきを確認するためのものです。
次のベクトルオブジェクト v の要素を 走査します。
vector<char> v = {'A', 'B', 'C', 'D', 'E', 'F');
関数テンプレート for_each の第3引数には、次のファンクタ decorate() を与えています。
このファンクタは、値 val を【】で囲んで出力します。
template <class Type>
struct decorate {
void operator()(const Type& val) {
std::cout << "【" << val << "】";
};
struct decorate {
void operator()(const Type& val) {
std::cout << "【" << val << "】";
};
以下はプログラムです。
#include <algorithm>
#include <vector>
#include <iostream>
template <class Type>
struct decorate {
void operator()(const Type& val) {
std::cout << "【" << val << "】";
}
};
int main() {
std::vector<char> v = { 'A', 'B', 'C', 'D', 'E', 'F' };
for_each(v.begin(), v.end(), decorate<char>());
std::cout << '\n';
}
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7352072
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック