Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengendalikan std:: Tatasusunan Pelbagai Saiz dalam Fungsi C?

Bagaimana Mengendalikan std:: Tatasusunan Pelbagai Saiz dalam Fungsi C?

Mary-Kate Olsen
Lepaskan: 2024-10-24 14:46:01
asal
959 orang telah melayarinya

How to Handle std::Arrays of Varying Sizes in C   Functions?

Melalui std::array Saiz Tidak Diketahui kepada Fungsi

Soalan:

Bagaimanakah fungsi boleh ditulis untuk mengendalikan std::arrays jenis yang diketahui tetapi saiz yang berbeza-beza? Sebagai contoh, pertimbangkan contoh berikut:

<code class="cpp">// Hypothetical function
void mulArray(std::array<int, ?>& arr, const int multiplier) {
    for (auto& e : arr) {
        e *= multiplier;
    }
}</code>
Salin selepas log masuk

Bagaimanakah fungsi seperti mulArray boleh ditakrifkan untuk menampung tatasusunan dengan pelbagai saiz seperti berikut:

<code class="cpp">std::array<int, 17> arr1;
std::array<int, 6>  arr2;
std::array<int, 95> arr3;</code>
Salin selepas log masuk

Jawapan:

Malangnya, tidak mungkin untuk menulis fungsi yang menerima std::arrays saiz yang tidak diketahui tanpa menggunakan templat fungsi atau menggunakan jenis bekas yang berbeza, seperti std::vector.

Templat Fungsi:

<code class="cpp">template<std::size_t SIZE>
void mulArray(std::array<int, SIZE>& arr, const int multiplier) {
    for (auto& e : arr) {
        e *= multiplier;
    }
}</code>
Salin selepas log masuk

Dalam contoh ini, fungsi mulArray ditakrifkan sebagai templat fungsi, membenarkan ia mengendalikan tatasusunan sebarang saiz. Parameter SIZE menentukan saiz tatasusunan pada masa penyusunan.

Contoh Penggunaan:

<code class="cpp">// Array of size 17
std::array<int, 17> arr1;

// Function call with template instantiation for size 17
mulArray(arr1, 3);</code>
Salin selepas log masuk

Nota: Apabila menggunakan templat fungsi, definisi fungsi mesti diletakkan dalam fail pengepala untuk boleh diakses semasa penyusunan.

Atas ialah kandungan terperinci Bagaimana Mengendalikan std:: Tatasusunan Pelbagai Saiz dalam Fungsi C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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