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 :).

Antworten auf die Frage(5)

Ihre Antwort auf die Frage