Passer un std::array de taille inconnue à une fonction
Problème :
Comment créer une fonction qui fonctionne sur un std::array de type connu mais de taille variable ?
Exemple :
<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>
Question :
Existe-t-il une approche simple pour faire fonctionner cela, similaire aux tableaux de style C ?
Réponse :
Malheureusement, non. Passer std::arrays de taille inconnue nécessite l'utilisation de modèles de fonctions ou de conteneurs alternatifs comme std::vectors.
Solution modèle :
<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>
Exemple en direct : https://godbolt.org/z/T1d1n3vrM
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!