用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似乎可以这么写。
参考
时间: 2024-10-03 23:02:35