Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memulakan `std::array` dengan Elegan dengan Jenis Boleh Bina Bukan Lalai dalam C ?
Permulaan Elegan std::array
Dalam alam C , std::array
Pertimbangkan coretan kod berikut:
<code class="cpp">template<typename T, int N> void f(T value) { std::array<T, N> items = {value, value, value, value, value}; }</code>
Walaupun mudah, mengulang nilai secara manual menjadi membosankan kerana N bertambah. Untuk menangani isu ini, pendekatan yang lebih elegan ialah memanfaatkan pengikatan berstruktur dan templat variadik C 17.
Menggunakan Penjana Jujukan dan Fungsi Ulangan
Kunci kepada elegan ini penyelesaian terletak pada penjanaan urutan jenis seq<0,1,2,3,...N-1> menggunakan genseq_t<> penjana. Dengan jenis jujukan ini, kita boleh mentakrifkan fungsi ulangan yang mengambil nilai dan jujukan yang dijana sebagai parameter dan mengembalikan std::array
Contoh Pelaksanaan
<code class="cpp">template<typename T, int N> void f(T value) { // genseq_t<N> represents seq<0,1,...N-1> std::array<T, N> items = repeat(value, genseq_t<N>{}); }</code>
Butiran Corak
Teknik ini membolehkan permulaan yang ringkas dan elegan bagi std::array
Atas ialah kandungan terperinci Bagaimana untuk Memulakan `std::array` dengan Elegan dengan Jenis Boleh Bina Bukan Lalai dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!