Построение бесконечного диапазона с помощью range-v3

#c #range-v3

#c #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 возвращает итератор. Для создания диапазона мне нужен sentinel, который всегда возвращает false . Есть ли какой-нибудь подобный sentinel уже в range-v3 или я должен сам его закодировать?

Ответ №1:

Вы можете использовать std::unreachable_sentinel (Или ranges::unreachable От <range/v3/iterator/unreachable_sentinel.hpp> ):

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

Комментарии:

1. Спасибо, это то, что я искал, но G не помог

2. На самом деле, не работает. subrange() не удается построить, а make_subrange завершается с ошибкой из-за отсутствия is_sized_sentinel_