2009年2月6日金曜日

STLの accumulate と find_if

vector vecの和は

double sum = accumulate( vec.begin(), vec.end(), 0.0, plus< double >() );


こんな感じ。結構面倒くさい。 plus<> 等は functional にある。

vecが昇順に整列済みなら、
*find_if( vec.begin(), vec.end(), bind2nd( greater< double >(), x) );

でxより大きい最初の値を得ることが出来る。

plus
minus
multiplies
divides
modulus
negate
equal_to
not_equal_to
less
less_equal
greater
greater_equal
logical_and
logical_or
logical_not
等など。

0 件のコメント:

コメントを投稿