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