Static Oneplus 不可控制论

2013/07/07 - by • C/C++

用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似乎可以这么写。

参考

blog comments powered by Disqus