Fungsi Templat untuk Menentukan Saiz Tatasusunan
Pertimbangkan fungsi templat di bawah:
template<typename T, size_t n> size_t array_size(const T (&)[n]) { return n; }
Tujuan templat ini adalah untuk menentukan saiz tatasusunan yang diluluskan sebagai hujah. Melepasi tatasusunan melalui rujukan mengekalkan saiznya, bukannya hanya mendapatkan penuding.
Penjelasan
Untuk memahami perkara ini, pertimbangkan perkara berikut:
Dalam fungsi templat kami, tatasusunan diluluskan melalui rujukan, memastikan saiznya ditangkap. Templat secara automatik menyimpulkan saiz (n) dan jenis elemen (T). Ini membolehkan kami menggunakannya sebagai:
size_t array_size(const int (&)[3]) { return 3; }
yang boleh digunakan seperti berikut:
size_t size_of_a = array_size(a);
Penggunaan Lanjutan
Terdapat variasi teknik ini yang membolehkan penentuan saiz masa kompilasi:
template<typename T, size_t n> char (& array_size(const T (&)[n]) )[n];
Templat ini mengembalikan rujukan kepada tatasusunan jenis char dengan saiz n. Oleh itu, kod berikut akan memberikan saiz tatasusunan yang diluluskan pada masa penyusunan:
size_t size_of_a = sizeof(array_size(a));
Pembinaan ini membolehkan saiz tatasusunan yang ditentukan masa kompilasi, menyokong tindakan seperti:
int havingSameSize[sizeof(array_size(a))];
Atas ialah kandungan terperinci Bagaimanakah Fungsi Templat Menentukan Saiz Tatasusunan C pada Masa Penyusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!