简体   繁体   中英

ranges::views::generate have generator function signal end of range

我想要一个终止的生成器,比如 python,但我无法从ranges::views::generate的接口判断是否支持。

You can roll it by hand easily enough: https://godbolt.org/z/xcGz6657r although it's probably better to use a coroutine generator if you have one available.

You can return an optional in the generator, and stop taking elements when a std::nullopt is generated with views::take_while

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();})
    ;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM