Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Fungsi Templat Menentukan Saiz Tatasusunan C pada Masa Penyusunan?

Bagaimanakah Fungsi Templat Menentukan Saiz Tatasusunan C pada Masa Penyusunan?

Barbara Streisand
Lepaskan: 2024-12-24 04:28:13
asal
219 orang telah melayarinya

How Can a Template Function Determine the Size of a C   Array at Compile Time?

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

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:

  • Melalukan tatasusunan kepada fungsi tanpa rujukan mengakibatkan pereputan penunjuk, kehilangan saiz tatasusunan maklumat.
  • Rujukan kepada tatasusunan, walau bagaimanapun, mengekalkan saiz dan jenis tatasusunan.

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

yang boleh digunakan seperti berikut:

size_t size_of_a = array_size(a);
Salin selepas log masuk

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

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

Pembinaan ini membolehkan saiz tatasusunan yang ditentukan masa kompilasi, menyokong tindakan seperti:

int havingSameSize[sizeof(array_size(a))];
Salin selepas log masuk

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!

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