対象のクラスが保持している要素数を数え上げるというパターンを range でチーンするには?
今回は、VC10で確認しました。
range でぶん回す対象と、加算する対象の型が違う時、どうするんだろ?と思ってたけど、ちゃんと考慮されているみたいです。
#include <boost/range/numeric.hpp>
#include <iostream>
#include <vector>
class foo {
public:
int count_;
public:
foo() : count_() {}
};
int take( int n, const foo& f ) { return n + f.count_; }
int main() {
std::vector<foo> v;
for( int i = 0; i < 20; ++i ) {
foo f;
f.count_ = i + 1;
v.push_back( f );
}
int sum = boost::accumulate( v, 0, take );
std::cout << sum << std::endl;
return 0;
}
追伸:Bloggerの分類ラベル C++ が認識できない。全部 cpp に書き換えるのしんどい。どうしよう。以前は認識できてたのに…
0 件のコメント:
コメントを投稿