yyyyyyyyyyyyyyyyyyyy

博客园 首页 新随笔 联系 订阅 管理

用C语言实现yield


C/C++中没有yield语法,有的时候想用产生器,自己实现一个循环会感觉很麻烦。C/C++应该如何实现产生器呢?

class FibonacciGenerator {
public:
  FibonacciGenerator() : a(0), b(0), state(0) {}
  int generate() {
    switch (state) {
      case 0:
        for (a = 0, b = 1; ; c = a + b) {
          state = 1;
          return c;
      case 1:;
        }
    }
  }
private:
  int a, b, c;
  int state;
}

这个代码真的很神奇,我也没搞懂他是如何运行的,但是循环式的generator似乎可以这么写。

参考

posted on 2017-07-22 13:22  xxxxxxxx1x2xxxxxxx  阅读(1299)  评论(0编辑  收藏  举报