Rumah pembangunan bahagian belakang C++ Bagaimana untuk Melepasi std::array Saiz Tidak Diketahui kepada Fungsi dalam C ?

Bagaimana untuk Melepasi std::array Saiz Tidak Diketahui kepada Fungsi dalam C ?

Oct 24, 2024 pm 07:04 PM

How to Pass an std::array of Unknown Size to a Function in C  ?

Melalui std::array Saiz Tidak Diketahui kepada Fungsi

Dalam C , bagaimana anda boleh mencipta fungsi yang menerima std: :array daripada jenis yang diketahui, tetapi saiz yang tidak diketahui?

Pertimbangkan contoh berikut:

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

Memandangkan fungsi ini, anda boleh mencipta std::arrays dengan saiz yang berbeza dan menyerahkannya kepada mulArray:

<code class="cpp">std::array&lt;int, 17&gt; arr1;
std::array&lt;int, 6&gt;  arr2;
std::array&lt;int, 95&gt; arr3;

mulArray(arr1, 3);
mulArray(arr2, 5);
mulArray(arr3, 2);</code>
Salin selepas log masuk

Adakah terdapat cara yang lebih mudah untuk mencapai ini, sama seperti menggunakan tatasusunan gaya C biasa?

Tidak, tidak mungkin untuk melakukan ini operasi tanpa menggunakan templat fungsi atau bekas alternatif seperti std::vector.

Penyelesaian Templat Fungsi

Untuk mencipta fungsi generik yang boleh mengendalikan susunan std:: sebarang saiz , anda perlu menggunakan templat fungsi:

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

Templat ini mentakrifkan fungsi yang mengambil tatasusunan integer dari sebarang saiz dan mendarab setiap elemen dengan pengganda yang diberikan.

Contoh langsung pelaksanaan ini boleh didapati di sini: [Contoh Langsung](https://godbolt.org/z/Y932XW)

Atas ialah kandungan terperinci Bagaimana untuk Melepasi std::array Saiz Tidak Diketahui kepada Fungsi dalam 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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes Langkah Format Fungsi Fungsi C Langkah Penukaran Kes Mar 03, 2025 pm 05:53 PM

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan? Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan? Mar 03, 2025 pm 05:52 PM

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Gulc: Perpustakaan C dibina dari awal Gulc: Perpustakaan C dibina dari awal Mar 03, 2025 pm 05:46 PM

Gulc: Perpustakaan C dibina dari awal

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu Mar 03, 2025 pm 05:53 PM

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi? Bagaimana Perpustakaan Templat St Standard (STL) berfungsi? Mar 12, 2025 pm 04:50 PM

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan? Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan? Mar 03, 2025 pm 05:51 PM

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Penggunaan dan perkongsian frasa yang berbeza Penggunaan dan perkongsian frasa yang berbeza Mar 03, 2025 pm 05:51 PM

Penggunaan dan perkongsian frasa yang berbeza

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap? Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap? Mar 12, 2025 pm 04:52 PM

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?

See all articles