Bagaimanakah Saya Boleh Menggunakan Talian Paip Julat dengan Bekas Sementara?

Mary-Kate Olsen
Lepaskan: 2024-11-02 15:58:03
asal
182 orang telah melayarinya

How Can I Use Range Pipelines with Temporary Containers?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan