Leniwa transformacja w C ++
Mam następujący fragment kodu Pythona, który chciałbym odtworzyć przy użyciu 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
Słyszałem oZwiększ Phoenix, ale nie mogłem znaleźć przykładu leniwegotransform
zachowywać się tak samo jak Pythonaimap
.
Edytuj: aby wyjaśnić moje pytanie, pomysł polega nie tylko na stosowaniu funkcji w sekwencji za pomocą afor
, ale raczej aby móc korzystać z takich algorytmówstd::transform
na nieskończonych generatorach. Ważny jest także sposób, w jaki funkcje są skomponowane (w bardziej funkcjonalnym języku, takim jak dialekt), ponieważ następnym krokiem jest skład funkcji.
Aktualizacja: dzięki bradgonesurfingowi, Davidowi Brownowi i Xeo za niesamowite odpowiedzi! Wybrałem Xeo, ponieważ jest to najbardziej zwięzły i to sprawia, że jestem dokładnie tam, gdzie chciałem być, ale David był bardzo ważny, aby zrozumieć koncepcje. Również bradgonesurfing's tipped Boost :: Range :).