3

C++ Streamsiterate()一个初始值n和一个函数,f()然后首先生成,然后nf(n), f(f(n))...

auto stream = MakeStream::iterate(1245, [](int x) {
    if(x % 2 == 0) {
        return x / 2;
    } else {
        return 3 * x + 1;
    }
});

Range V3对此有什么作用?

4

1 回答 1

2

在 range-v3 中,您将使用以下命令创建这样的范围view::generate

auto stream = ranges::view::generate([x=1245]() mutable {
    auto old = x;
    if(x % 2 == 0)
        x /= 2;
    else
        x = 3 * x + 1;
    return old;
});

演示

于 2016-03-09T17:52:58.490 回答