Maison >développement back-end >C++ >Comment puis-je obtenir la longueur d'un tableau C à l'aide d'une fonction de modèle et garantir un résultat d'expression constante ?

Comment puis-je obtenir la longueur d'un tableau C à l'aide d'une fonction de modèle et garantir un résultat d'expression constante ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-26 16:25:12889parcourir

How Can I Get the Length of a C   Array Using a Template Function and Ensure a Constant Expression Result?

Comprendre la fonction du modèle "Taille du tableau"

En programmation, il est souvent nécessaire de récupérer la longueur d'un tableau pour effectuer diverses opérations . La fonction modèle GetArrLength vise à accomplir cette tâche en utilisant une approche concise et efficace.

La définition de la fonction est la suivante :

template<typename T, int size>
int GetArrLength(T(&amp;)[size])
{
    return size;
}

Comment ça marche

Pour comprendre le comportement de la fonction, décomposons son structure :

  • Type de paramètre : T(&&)[size]

    • Ce paramètre représente une référence à un tableau de taille taille dont le type d'élément est T.
  • Paramètres du modèle : T, taille

    • Ces paramètres représentent le type et taille du tableau, respectivement. Il peut s'agir de n'importe quel type C valide et valeur entière.
  • Valeur de retour : int

    • La fonction renvoie la valeur de taille, qui représente la longueur du array.

Exemple d'utilisation

Considérez l'extrait de code suivant :

int a[10];
int arraySize = GetArrLength(a);

Dans ce scénario :

  • Le paramètre T est instancié avec int puisque a est un tableau d'entiers.
  • Le paramètre size est instancié avec 10 puisque a contient 10 éléments.
  • La fonction call renvoie 10 comme longueur du tableau.

Problème d'expression constante

Comme le suggère la question d'origine, la valeur de retour de GetArrLength n'est pas une expression constante. En C , les expressions constantes doivent donner une valeur connue au moment de la compilation. Pour les longueurs de tableau, cela est toujours vrai puisque les tableaux sont alloués de manière statique. Cependant, la fonction d'origine ne fournit pas de moyen de renvoyer ces informations sous forme de constante.

Pour résoudre ce problème, une solution plus avancée est nécessaire, telle que celle fournie dans la section réponse de la question. Cette solution garantit que la fonction renvoie une valeur constante pour la longueur du tableau.

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