#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 件のコメント:
コメントを投稿