Common Library  0.9.5
OpBinder< Res, UnOp, BinOp > クラステンプレート

単項関数と二項関数の組み合わせにより値を処理するための関数オブジェクト [詳解]

公開メンバ関数

 OpBinder (UnOp unOp, BinOp binOp)
 処理用の関数と加算用の関数を指定して構築 [詳解]
 
template<class T , class U >
Res operator() (T init, U value)
 値 value を単項関数で処理してから二項関数により init に作用させる [詳解]
 

詳解

template<class Res, class UnOp, class BinOp>
class OpBinder< Res, UnOp, BinOp >

単項関数と二項関数の組み合わせにより値を処理するための関数オブジェクト

渡された数を単項関数で処理してから加算などの二項関数を使って初期値に作用させる。 ループ処理により和の計算などを行うことを想定した関数オブジェクトであり、例えば

typedef double ( *Func )( double, double );
std::accumulate( s, e, 0.0,
MathLib::OpBind< double >(
std::bind2nd( std::ptr_fun( static_cast< Func >( std::pow ) ), 2.0 ),
)
);
Kahanの加算アルゴリズムを使って和を計算するための関数オブジェクト
Definition: math_library.h:968

とすれば、[ s, e ) に対し KahanSumOp を使って二乗和を計算することができる。

テンプレート引数の Res は戻り値の型、UnOp は単項関数、BinOp は二項関数を表す。

構築子と解体子

◆ OpBinder()

template<class Res , class UnOp , class BinOp >
OpBinder< Res, UnOp, BinOp >::OpBinder ( UnOp  unOp,
BinOp  binOp 
)
inline

処理用の関数と加算用の関数を指定して構築

引数
unOp単項関数
binOp二項関数

関数詳解

◆ operator()()

template<class Res , class UnOp , class BinOp >
template<class T , class U >
Res OpBinder< Res, UnOp, BinOp >::operator() ( init,
value 
)
inline

値 value を単項関数で処理してから二項関数により init に作用させる

テンプレート引数の T は初期値の型、U は処理する値の型をそれぞれ表す。 単項関数が U 型の値を処理して T 型の値を出力し、二項関数によって T 型の値から Res 型の値が出力されることを想定している。

引数
init初期値
value処理する値
戻り値
処理結果

このクラス詳解は次のファイルから抽出されました: