仅使用"last"参数来提升范围

Boost irange with "last" argument only

本文关键字:范围 last 参数      更新时间:2023-10-16

是否有boost::irange的扩展,只需要一个int参数,使用0作为默认的first参数,并将给定的int作为原始irange中的last参数?

例如,我可以这样做:

foreach(int i, irange(0, 3))
    cout << i << endl;

但是我想要与Python的range函数相同的功能,像这样:

foreach(int i, irange(3))
    cout << i << endl;

如果这个扩展不存在,我猜它应该很容易写自己,但以下是不工作:

template<class Integer>
iterator_range< range_detail::integer_iterator<Integer> > irange(int last){
    return irange(0, last);
}

您没有使用模板参数。试试这个:

template<class Integer>
boost::iterator_range< boost::range_detail::integer_iterator<Integer> > irange(Integer last)
{
    return boost::irange(static_cast<Integer>(0), last);
}