Menulis Julat Paip dengan Bekas Sementara
Dalam julat-v3, apabila bekerja dengan saluran paip yang menggunakan fungsi pihak ketiga yang mengembalikan vektor, adalah penting untuk mencipta saluran paip yang memetakan yang berfungsi kepada semua elemen julat dan meratakan semua vektor yang terhasil ke dalam julat tunggal dengan semua elemennya.
Pada mulanya, seseorang mungkin cuba menulis saluran paip sedemikian sebagai:
<code class="cpp">auto rng = src | view::transform(f) | view::join;</code>
Walau bagaimanapun, pendekatan ini sebelum ini tidak dapat dilaksanakan kerana adalah mustahil untuk mencipta paparan bekas sementara seperti yang dihasilkan oleh f.
Untuk menangani isu ini, tampalan telah diperkenalkan yang kini membolehkan saluran paip julat sedemikian ditulis dengan betul. Kuncinya ialah menambah operator pandangan::cache1 ke dalam saluran paip, seperti yang dilihat dalam contoh berikut:
<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>
Ini memastikan saluran paip memproses bekas sementara dengan betul, membolehkan kami menulis saluran paip julat yang menggunakan bekas sementara dengan berkesan.
Untuk masalah yang diterangkan dalam soalan, penyelesaiannya adalah dengan mengubah suai saluran paip seperti berikut:
<code class="cpp">auto rng = src | views::transform(f) | views::cache1 | views::join;</code>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Talian Paip Julat dengan Bekas Sementara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!