Melalui std::array Saiz Tidak Diketahui kepada Fungsi
Masalah:
Bagaimana untuk mencipta fungsi yang beroperasi pada std::array jenis yang diketahui tetapi saiz berubah?
Contoh:
<code class="cpp">// hypothetical example void mulArray(std::array<int, ?>& arr, const int multiplier) { for(auto& e : arr) { e *= multiplier; } }</code>
<code class="cpp">// imaginary arrays with values std::array<int, 17> arr1; std::array<int, 6> arr2; std::array<int, 95> arr3; mulArray(arr1, 3); mulArray(arr2, 5); mulArray(arr3, 2);</code>
Soalan :
Adakah terdapat pendekatan mudah untuk membuat ini berfungsi, serupa dengan tatasusunan gaya C?
Jawapan:
Malangnya, tidak. Melepasi std::arrays saiz yang tidak diketahui memerlukan menggunakan templat fungsi atau bekas alternatif seperti std::vectors.
Penyelesaian Templat:
<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>
Contoh Langsung: https://godbolt.org/z/T1d1n3vrM
Atas ialah kandungan terperinci Bagaimana Mengendalikan std::arrays of Variable Size in Functions: A straightforward approach?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!