Maison > développement back-end > C++ > le corps du texte

std::array de taille inconnue peut-il être transmis directement à une fonction ?

Susan Sarandon
Libérer: 2024-10-25 04:44:29
original
293 Les gens l'ont consulté

Can std::array with Unknown Size be Passed to a Function Directly?

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

Dans cet exemple de code, l'objectif est de créer une fonction qui prend un std::array de un type connu mais une taille inconnue. Il s'agit d'un scénario courant qui peut survenir dans diverses tâches de programmation.

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

// lets imagine these being full of numbers
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>
Copier après la connexion

Cependant, lors de la recherche d'une solution par le développeur, ils ont rencontré des suggestions pour utiliser des modèles de fonction. Bien que les modèles de fonctions puissent résoudre ce problème, ils peuvent introduire une complexité supplémentaire et ne constituent pas toujours l'approche la plus efficace.

La question posée est de savoir s'il existe un moyen plus simple d'accomplir cette tâche, similaire à la façon dont on travaillerait avec tableaux simples de style C. Malheureusement, la réponse est négative. En C , il n'existe pas de moyen direct de passer un tableau de taille inconnue à une fonction sans utiliser de modèles de fonctions.

Pour que cela soit possible, il faut en effet recourir à des modèles de fonctions, comme illustré ci-dessous :

<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

Ce modèle de fonction peut être utilisé avec des tableaux de n'importe quelle taille, comme démontré dans l'exemple en direct suivant : https://godbolt.org/z/sV49sK

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!