Maison > développement back-end > C++ > 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
Libérer: 2024-10-24 14:46:01
original
884 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal