【发布时间】:2018-12-14 21:11:58
【问题描述】:
我有以下代码来生成一个范围内相邻对的元组。这适用于双向范围,但不适用于仅前向范围。
template <typename Range>
// Returns a range of adjacent pairs of the input range
auto make_adjacent_range(Range const & r) -> decltype(boost::combine(
boost::make_iterator_range(boost::begin(r), boost::prior(boost::end(r))),
boost::make_iterator_range(boost::next(boost::begin(r)), boost::end(r))))
{
return boost::combine(
boost::make_iterator_range(boost::begin(r), boost::prior(boost::end(r))),
boost::make_iterator_range(boost::next(boost::begin(r)), boost::end(r)));
}
boost::prior 不接受仅向前的范围。是否有同样优雅的解决方案适用于远期范围?
【问题讨论】: