使用臨時容器編寫範圍管道
在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中文網其他相關文章!