boost::irange

Boost.Rangeが2.0になってから、irangeというRangeが追加されました。
これは、boost::counting_rangeを置き換えて使用できます。


たとえば、boost::counting_rangeで書いた以下のコードは

#include <iostream>
#include <boost/range/counting_range.hpp>
#include <boost/range/iterator_range_io.hpp>

int main()
{
    std::cout << boost::counting_range(0, 5) << std::endl;
}
01234

boost::irangeでも同じように書くことができます:

#include <iostream>
#include <boost/range/irange.hpp>

int main()
{
    std::cout << boost::irange(0, 5) << std::endl;
}
01234

counting_rangeと違うのは、第3引数としてステップ幅を指定できるという点です。
あと関数名の長さ。

#include <iostream>
#include <boost/range/irange.hpp>

int main()
{
    const int step = 2;
    std::cout << boost::irange(0, 10, step) << std::endl;
}
02468

Ovenではsteps Rangeアダプタで代用できます。



【参照】
boost::irange