Penjanaan Array Constexpr dalam C 11
Soalan:
Bagaimana kita boleh mencipta constexpr tatasusunan berasaskan sifar sehingga saiz yang ditentukan dalam C 11?
Jawapan:
Dalam C 14, tugasan ini menjadi mudah terima kasih kepada pengenalan pembina dan gelung constexpr. Walau bagaimanapun, dalam C 11, kita perlu menggunakan pendekatan yang lebih rumit.
Pelaksanaan:
Langkah 1: Menggunakan Kelas Templat dengan Constexpr Constructor
Kami mentakrifkan templat kelas A yang mengambil tatasusunan saiz N sebagai parameter templat. Ia termasuk pembina constexpr yang memulakan arr tatasusunan saiz N.
Langkah 2: Mengisi Array
Dalam pembina constexpr, kami lelaran sehingga N, memberikan setiap elemen arr indeks yang sepadan. Ini membolehkan kami mengisi tatasusunan dengan jujukan 0 hingga n-1.
Langkah 3: Penggunaan
Kita boleh membuat instantiate kelas A templat untuk mendapatkan contoh tatasusunan constexpr. Dengan mengakses ahli arrnya, kita boleh berinteraksi dengan elemennya.
Berikut ialah contoh kod yang menunjukkan pendekatan ini dalam C 11:
#include <iostream> template<int N> struct A { constexpr A() : arr() { for (auto i = 0; i != N; ++i) arr[i] = i; } int arr[N]; }; int main() { constexpr auto a = A<4>(); for (auto x : a.arr) std::cout << x << '\n'; }
Kod ini akan mengeluarkan jangkaan 0 hingga 3 jujukan, menunjukkan kejayaan penciptaan tatasusunan berasaskan sifar constexpr dalam C 11.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Tatasusunan Berasaskan Sifar Constexpr dalam C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!