Heim > Artikel > Backend-Entwicklung > Wie kann ich eine Range-Pipeline erstellen, die eine Funktion auf Elemente anwendet und die Ergebnisse mithilfe temporärer Container in Range-V3 reduziert?
Erstellen von Range-Pipelines mit temporären Containern in Range-V3
Beim Umgang mit einer Drittanbieterfunktion, die Elemente eines Bereichs bearbeitet und einen Vektor zurückgibt, stellt sich natürlich die Frage: Wie erstellt man eine Range-Pipeline, die die Funktion auf jedes Element anwendet und einen einzelnen, abgeflachten Bereich erzeugt, der alle zurückgegebenen Elemente enthält?
In früheren Versionen von Range-V3, Versuche Das Erstellen solcher Pipelines mit view::transform und view::join würde fehlschlagen, da keine Ansichten temporärer Container erstellt werden können.
Ein kürzlich durchgeführter Commit hat dieses Problem jedoch durch die Einführung des view::cache1-Operators behoben , was die Speicherung von Zwischenergebnissen in temporären Containern ermöglicht. Dies ermöglicht die Erstellung von Bereichspipelines, die temporäre Container nutzen und gleichzeitig ihre Robustheit beibehalten.
Um diese Funktionalität zu veranschaulichen, betrachten wir das bereitgestellte Beispiel:
<code class="cpp">auto rng = src | view::transform(f) | view::cache1 | view::join;</code>
In dieser Pipeline view::transform wendet die Funktion f auf jedes Element von src an und erzeugt temporäre Vektoren. view::cache1 speichert diese temporären Vektoren zwischen, sodass nachfolgende Vorgänge wie view::join die abgeflachten Elemente nutzen können.
Die aktualisierte Pipeline stellt sicher, dass der abgeflachte Bereich rng die folgenden Eigenschaften hat:
Diese Lösung demonstriert die Vielseitigkeit von range-v3 und seine Fähigkeit, komplexe Bereichsmanipulationen mit temporären Containern durchzuführen.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Range-Pipeline erstellen, die eine Funktion auf Elemente anwendet und die Ergebnisse mithilfe temporärer Container in Range-V3 reduziert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!