使用 range-v3 构建无限范围

Building an infinite range with range-v3

我正在尝试建立一个范围,在三角形中产生无限随机点。为此,我使用了 CGAL,它已经提供了在三角形中生成随机点的功能。

        Triangle coarseTriangle = {v[0], v[1], v[2]};
        CGAL::Random_points_in_triangle_2<Point> randomSamplesGenerator(coarseTriangle);

但是,CGAL::Random_points_in_triangle_2 return 是一个迭代器。为了产生一个范围,我需要一个总是 return false 的哨兵。 range-v3 中是否已经有类似的哨兵,还是我必须自己编写一个?

您可以使用 std::unreachable_sentinel (Or ranges::unreachable from <range/v3/iterator/unreachable_sentinel.hpp>):

        ranges::subrange randomSamplesRange(randomSamplesGenerator, ranges::unreachable);