如何在C中创建无限序列

前端之家收集整理的这篇文章主要介绍了如何在C中创建无限序列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Visual Studio 2012,因此C 11大部分都可以……
提升也很好,但我宁愿避免其他的自由,至少不是威德利用过的.

我想以最优雅的方式创建一个只返回无限序列的前向迭代器.例如,所有自然数的序列.

基本上我想要这个f#代码的C等效:

let nums =
    seq { while true do
            yield 1
            yield 2
        }

上面的代码基本上创建了一个返回[1; 2; 1; 2 …]的枚举器

我知道我可以通过写一个课来做到这一点,但是所有新的lambdas和所有……都必须有一个更短的方式……

解决方法

更简单的事情,如果你可以依赖于提升就是写这样的东西:
int i = 0;
auto gen = boost::make_generator_iterator([=]() { return i++; });

C 14版:

auto gen = boost::make_generator_iterator([i=0]() { return i++;});

文档是here.

P.S.:我不确定它是否可以在没有result_type成员的情况下工作,C 03仿函数需要它.

原文链接:https://www.f2er.com/c/117130.html

猜你在找的C&C++相关文章