是否有可能以某种方式使 C++
代码以某种方式类似于中的代码工作,这些代码python
称为生成器,“而不发明新的相对论”。
例如,斐波那契数列:
def fib():
f = 1
s = 0
while True:
yield s
f, s = s, s+f
k = fib()
for i in range(10):
print(next(k))
我试过这个,但我认为还有一些更“正确”的选择?
int fib(){
static int f=1, s=0;
int t=f;
f = s;
s += t;
return s;
}
int main(){
for(int i=0; i<10; ++i)
cout << fib() << ' ';
return 0;
}
至少,我的对手是“一次性”(你不能再次开始这个序列)。
例如像这样(创建一个对象实例并使用函数调用运算符):
这就是我会做的:)
结果:
getByIndex
您可以按类型、各种转换等添加各种功能。您还可以制作类模板,然后使用长数字,例如ullong int
. 可以进行任何溢出检查。在不久的将来(以及现在的 Visual Studio 用户,如果您启用最新 C++ 工作草案中的功能),您可以使用更多规范生成器(使用co_yield 关键字):
(示例在 Visual Studio 2019 中构建,启用了最新 C++ 工作草案中的功能,输出 0 到 100 范围内的斐波那契数)