Lazy Transformation in C ++
Ich habe das folgende Python-Snippet, das ich mit C ++ reproduzieren möchte:
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
Ich habe davon gehörtSteigern Sie Phoenix, aber ich konnte kein Beispiel für eine faule findentransform
Verhalten wie bei Pythonimap
.
Bearbeiten: um meine Frage zu klären, geht es nicht nur darum, Funktionen nacheinander mit einemfor
, sondern in der Lage sein, Algorithmen wiestd::transform
auf unendlichen Generatoren. Die Art und Weise, wie die Funktionen zusammengesetzt sind (in einer funktionaleren Sprache wie Dialekt), ist ebenfalls wichtig, da der nächste Schritt die Funktionszusammensetzung ist.
Update: Vielen Dank an Bradgonesurfing, David Brown und Xeo für die tollen Antworten! Ich habe mich für Xeo entschieden, weil es am präzisesten ist und mich genau dorthin bringt, wo ich sein wollte, aber David war sehr wichtig, um die Konzepte durchzusetzen. Auch Bradgonesurfing ist Boost :: Range :).