パイプラインset_segregate
※ 2018/3/11 ライブラリ整理より当機能は削除した。
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
これはイテレータアダプタを作ると尚良いかもしれない。