我有一些需要在 C + + 中模仿的 Python 代码示例。我不需要任何特定的解决方案(例如基于协同例程的产生式解决方案,尽管它们也是可接受的答案) ,我只需要以某种方式重现语义。
这是一个基本的序列生成器,显然太大,无法存储物化版本。
def pair_sequence():
for i in range(2**32):
for j in range(2**32):
yield (i, j)
我们的目标是维护上述序列的两个实例,并以半锁步(但是以块的形式)迭代它们。在下面的示例中,first_pass
使用对序列初始化缓冲区,而 second_pass
重新生成 一模一样的顺序并再次处理缓冲区。
def run():
seq1 = pair_sequence()
seq2 = pair_sequence()
buffer = [0] * 1000
first_pass(seq1, buffer)
second_pass(seq2, buffer)
... repeat ...
对于 C + + 中的解决方案,我唯一能找到的就是使用 C + + 协程模拟 yield
,但是我还没有找到任何关于如何做到这一点的好的参考资料。我还对这个问题的替代(非一般)解决方案感兴趣。我没有足够的内存预算,以保持一个副本的顺序之间的通行证。