在Range-V3 中使用臨時容器建立Range 管道
處理對範圍元素進行操作的第三方函數時傳回一個向量,自然會出現一個問題:如何建立一個範圍管道,將函數應用於每個元素並產生包含所有返回元素的單一扁平範圍?
在 Range-V3 的早期版本中,嘗試由於無法建立臨時容器的視圖,使用 view::transform 和 view::join 建立此類管道將會失敗。
但是,最近的提交透過引入 view::cache1 運算子解決了這個問題,它允許將中間結果儲存在臨時容器中。這使得能夠創建利用臨時容器的範圍管道,同時保持其穩健性。
為了說明此功能,讓我們考慮提供的範例:
<code class="cpp">auto rng = src | view::transform(f) | view::cache1 | view::join;</code>
在此管道中,view::transform將函數f 應用於src 的每個元素,產生臨時向量。 view::cache1 快取這些臨時向量,允許後續操作(例如 view::join)使用扁平化元素。
更新的管道確保扁平化範圍 rng 具有以下屬性:
此解決方案展示了range-v3 及其處理涉及臨時容器的複雜範圍操作的能力。
以上是如何建立範圍管道,將函數應用於元素並使用 Range-V3 中的臨時容器展平結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!