Ленивое преобразование в C ++
У меня есть следующий фрагмент Python, который я хотел бы воспроизвести с помощью C ++:
from itertools import count, imap
source = count(1)
pipe1 = imap(lambda x: 2 * x, source)
pipe2 = imap(lambda x: x + 1, pipe1)
sink = imap(lambda x: 3 * x, pipe2)
for i in sink:
print i
мы слышали оПовысить Феникс, но я не могне найти пример ленивогоtransform
ведет себя так же, как в Python.imap
Изменить: чтобы прояснить мой вопрос, идея заключается не только в применении функций в последовательности, используяfor
, а скорее, чтобы иметь возможность использовать алгоритмы, такие какstd::transform
на бесконечных генераторах. Способ составления функций (на более функциональном языке, таком как диалект) также важен, поскольку следующим шагом является составление функций.
Обновление: спасибо bradgonesurfing, David Brown и Xeo за потрясающие ответы! Я выбрал Xeo 'потому что этоЭто самый лаконичный вариант, и он дает мне то, что я хотел, но ДэвидЭто было очень важно для понимания концепций. Кроме того, Bradgonesurfing 's Boost :: Range :).