トップページ > 関数型プログラミング >
#include <algorithm>
#include <functional>
#include <boost/functional.hpp>
bool is_even( int x )
{
return x%2 == 0;
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
// 普通の関数をstd::not1に渡すにはptr_funが必要
// × std::find_if( arr, arr+10, std::not1(is_even) );
std::find_if( arr, arr+10, std::not1(std::ptr_fun(is_even)) );
// boost::not1なら普通にそのまま渡すことができる
std::find_if( arr, arr+10, boost::not1(is_even) );
return 0;
}
このヘッダで用意されている関数は皆、標準ライブラリの<functional>
に同じ名前の関数があります。違いは「参照への参照」問題が解決されていることと、
普通の関数ポインタを渡すときに、ptr_fun
でくくらなくてもよいこと。