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

参考

相关文章:

  • 2021-11-23
  • 2021-04-23
  • 2021-05-13
  • 2021-05-28
  • 2021-04-07
  • 2021-12-09
  • 2021-12-15
  • 2022-02-15
猜你喜欢
  • 2021-12-02
  • 2021-11-22
  • 2021-11-04
  • 2022-12-23
  • 2022-12-23
  • 2021-08-26
  • 2021-06-26
相关资源
相似解决方案