Rokiのチラ裏

学生による学習のログ

パイプラインset_segregate

set_segregateをパイプライン記法で。まあラップしただけ。

以下のように使う。

std::vector<int> 
        left = boost::irange(0,9) | srook::adaptors::copied,
        right = boost::irange(7,19) | srook::adaptors::copied;
std::vector<int> left_only,both,right_only;

// pairかtupleで渡す。set_segregateの引数にはコンテナ直でも開始位置を示すイテレータでも良い。
std::make_pair(left,right) | srook::pipealgo::set_segregate(std::back_inserter(left_only),std::back_inserter(both),std::back_inserter(right_only));
std::make_tuple(left,right) | srook::pipealgo::set_segregate(left_only,both,right_only);

left_only | srook::adaptors::print();  // 0 1 2 3 4 5 6
both | srook::adaptors::print(); // 7 8
right_only | srook::adaptors::print(); // 9 10 11 12 13 14 15 16 17 18

これはイテレータアダプタを作ると尚良いかもしれない。