首頁 >後端開發 >C++ >如何將範圍管道與臨時容器一起使用?

如何將範圍管道與臨時容器一起使用?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-02 15:58:03219瀏覽

How Can I Use Range Pipelines with Temporary Containers?

使用臨時容器編寫範圍管道

在range-v3 中,當使用使用返迴向量,有必要建立一個管道,將該函數對應到該範圍的所有元素,並將所有結果向量及其所有元素展平到一個範圍中。

最初,人們可能會嘗試編寫這樣的管道as:

<code class="cpp">auto rng = src | view::transform(f) | view::join;</code>

但是,這種方法以前是不可行的,因為不可能創建像f 生成的臨時容器的視圖。

為了解決這個問題,發布了一個補丁介紹了現在允許正確編寫此類範圍管道。關鍵是將views::cache1運算符添加到管道中,如下例所示:

<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>

這確保管道正確處理臨時容器,允許我們編寫使用範圍管道有效地臨時容器。

對於問題中描述的問題,解決方案是修改管道如下:

<code class="cpp">auto rng = src | views::transform(f) | views::cache1 | views::join;</code>

以上是如何將範圍管道與臨時容器一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn