Mencipta Saluran Paip Julat dengan Bekas Sementara dalam Julat-V3
Apabila berurusan dengan fungsi pihak ketiga yang beroperasi pada elemen julat dan mengembalikan vektor, persoalan semula jadi timbul: bagaimana untuk membuat saluran paip julat yang menggunakan fungsi pada setiap elemen dan menghasilkan julat tunggal yang diratakan yang mengandungi semua elemen yang dikembalikan?
Dalam versi Julat-V3 sebelumnya, cuba untuk mencipta saluran paip sedemikian menggunakan view::transform and view::join akan gagal kerana ketidakupayaan untuk mencipta paparan bekas sementara.
Walau bagaimanapun, komitmen baru-baru ini telah menangani isu ini dengan memperkenalkan operator view::cache1 , yang membolehkan penyimpanan hasil perantaraan dalam bekas sementara. Ini membolehkan penciptaan rangkaian paip yang menggunakan bekas sementara sambil mengekalkan keteguhannya.
Untuk menggambarkan kefungsian ini, mari pertimbangkan contoh yang disediakan:
<code class="cpp">auto rng = src | view::transform(f) | view::cache1 | view::join;</code>
Dalam saluran paip ini, lihat::transform menggunakan fungsi f pada setiap elemen src, menghasilkan vektor sementara. view::cache1 menyimpan cache vektor sementara ini, membenarkan operasi seterusnya seperti view::join untuk menggunakan elemen yang diratakan.
Saluran paip yang dikemas kini memastikan bahawa julat yang diratakan mempunyai sifat berikut:
Penyelesaian ini menunjukkan kepelbagaian range-v3 dan keupayaannya untuk mengendalikan manipulasi julat kompleks yang melibatkan bekas sementara.
Atas ialah kandungan terperinci Bagaimanakah saya boleh membuat saluran paip julat yang menggunakan fungsi pada elemen dan meratakan hasil menggunakan bekas sementara dalam Julat-V3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!