for_eachに関数を渡す

foreach-function.png
std::for_each(charactors.begin(),charctors.end(),std::mem_fun(&Charactor::draw());

mem_fun]関数をつかうことにより、1行でfor_each文を書くことが可能です。

ラムダ式(無名関数)を使う

std::for_each(begin(),end(),ラムダ式);

std::for_each(charactors.begin(),charctors.end(),[](Charactor* charactor){charactor->draw();});

ラムダ式

中身はどうなっているのか?

template<class InputIt, class UnaryFunction>
UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f)
{
    for (; first != last; ++first) {
        f(*first);
    }
    return f;
}

Unary functionとは引数を一個だけとる関数のこと

つまり、for_eachに渡せる関数は・・・

コンテナの要素をただひとつの引数とする関数!


lambda

サポートサイト Wikidot.com lambda