ranges::views::generate有生成器函数信号,range结束



我想有一个终止生成器,像python一样,但我不能从ranges::views::generate的接口判断是否支持。

你可以很容易地用手卷它:https://godbolt.org/z/xcGz6657r不过如果有协程生成器的话,使用协程生成器可能会更好。

您可以在生成器中返回一个可选项,并且当views::take_while生成std::nullopt时停止获取元素

auto out = ranges::views::generate(
[i = 0]() mutable -> std::optional<int>
{
if (i > 3)
return std::nullopt;
return { i++ };
})
| ranges::views::take_while([](auto opt){ return opt.has_value();})
;

相关内容

  • 没有找到相关文章

最新更新