Rokiのチラ裏

学生による学習のログ

Rangeアルゴリズム関数に対するReverseアダプタ

boost.range。

#include<boost/range/algorithm.hpp>
#include<numeric>
#include<vector>
int main()
{
    std::vector<int> v(10);
    std::iota(std::rbegin(v),std::rend(v),0);
    boost::sort(v);
}

STLが各要素に重きを置いた設計であるのに対して、Boost.rangeは、rangeを1単位として考え重きを置いた設計であると言える。しかし、reverse iteratorを用いた時のような挙動を指定する事ができないのでは?とも思ったが、アダプタを用いる事で可能であった。

#include<boost/range/algorithm.hpp>
#include<boost/range/algorithm_ext/iota.hpp>
#include<boost/range/adaptors.hpp>
#include<vector>
int main()
{
    std::vector<int> v(10);
    boost::iota(v|boost::adaptors::reversed,0);
    boost::sort(v);
}

boostのドキュメントを眺めていて初めて知った。....これは、たまらん。

参照