Maison  >  Article  >  développement back-end  >  Comment gérer std::Arrays de différentes tailles dans les fonctions C ?

Comment gérer std::Arrays de différentes tailles dans les fonctions C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 14:46:01800parcourir

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

Passer un std::array de taille inconnue à une fonction

Question :

Comment écrire une fonction pour gérer des std::arrays de type connu mais de tailles variables ? Par exemple, considérons l'exemple suivant :

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

Comment une fonction telle que mulArray peut-elle être définie pour s'adapter à des tableaux de différentes tailles comme celui-ci :

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

Réponse :

Malheureusement, il n'est pas possible d'écrire une fonction qui accepte std :: tableaux de tailles inconnues sans utiliser un modèle de fonction ou sans employer un type de conteneur différent, tel que std :: vector.

Modèles de fonctions :

<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>

Dans cet exemple, la fonction mulArray est définie comme un modèle de fonction, lui permettant de gérer des tableaux de n'importe quelle taille. Le paramètre SIZE spécifie la taille du tableau au moment de la compilation.

Exemple d'utilisation :

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

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

Remarque : Lors de l'utilisation de modèles de fonction, la définition de la fonction doit être placée dans un fichier d'en-tête pour être accessible lors de la compilation.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn