#include <boost/range/adaptor/map.hpp> #include <boost/range/adaptor/filtered.hpp> #include <boost/assign.hpp> #include <iostream> #include <vector> #include <Loki/AssocVector.h> #include <boost/foreach.hpp> #include <boost/range/algorithm/for_each.hpp> struct is_even { bool operator()( int x ) const { return x % 2 == 0; } }; struct is_bigger { int val_; is_bigger(int val) : val_(val) {} bool operator()( int x ) const { return x > val_; } }; void disp( int x ) { std::cout << x << ","; } int main(int argc, const char* argv[]) { using namespace boost::assign; using namespace boost::adaptors; std::vector<int> input; input += 1,2,3,4,5,6,7,8,9; BOOST_FOREACH( int n, input | filtered(is_even()) ) { std::cout << n << ","; } std::cout << std::endl; Loki::AssocVector<int,int> vv; for( int i = 1; i < 10; ++i ) { vv[i] = i * 10 + i; } boost::for_each( vv | map_values | filtered(is_even()), disp ); std::cout << std::endl; is_bigger ib( 50 ); boost::for_each( vv | map_values | filtered(ib), disp ); std::cout << std::endl; is_bigger ib2( 80 ); boost::for_each( vv | map_values | filtered(ib2), disp ); }
2011年9月7日水曜日
boost::range 習作
ポイント:
map の代わりに Loki::AssocVector でも大丈夫か試してみた。
foreach は2種類使ってみた。
0x は、お預け
最初 vv 指定すべきところを、input 指定してコンパイルエラーになるという初歩的ミスを犯してしまった。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿