Heim > Artikel > Backend-Entwicklung > Wie kann ich Range Pipelines mit temporären Containern nutzen?
Range-Pipelines mit temporären Containern schreiben
In Range-v3, wenn mit einer Pipeline gearbeitet wird, die eine Drittanbieterfunktion verwendet, die a zurückgibt Für einen Vektor ist es wichtig, eine Pipeline zu erstellen, die diese Funktion allen Elementen des Bereichs zuordnet und alle resultierenden Vektoren mit all ihren Elementen zu einem einzigen Bereich zusammenfasst.
Zunächst könnte man versuchen, eine solche Pipeline zu schreiben als:
<code class="cpp">auto rng = src | view::transform(f) | view::join;</code>
Dieser Ansatz war bisher jedoch nicht durchführbar, da es unmöglich ist, Ansichten von temporären Containern wie denen von f zu erstellen.
Um dieses Problem zu beheben, wurde ein Patch erstellt eingeführt, die es nun ermöglicht, solche Range-Pipelines korrekt zu schreiben. Der Schlüssel besteht darin, den Operator „views::cache1“ in die Pipeline einzufügen, wie im folgenden Beispiel zu sehen:
<code class="cpp">auto rng = views::iota(0, 4) | views::transform([](int i) { return std::string(i, char('a' + i)); }) | views::cache1 | views::join('-');</code>
Dadurch wird sichergestellt, dass die Pipeline die temporären Container korrekt verarbeitet, sodass wir Bereichspipelines schreiben können, die sie verwenden temporäre Container effektiv zu nutzen.
Für das in der Frage beschriebene Problem bestünde die Lösung darin, die Pipeline wie folgt zu modifizieren:
<code class="cpp">auto rng = src | views::transform(f) | views::cache1 | views::join;</code>
Das obige ist der detaillierte Inhalt vonWie kann ich Range Pipelines mit temporären Containern nutzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!