Maison > Article > développement back-end > Comment puis-je obtenir la taille d'un tableau à l'aide d'une fonction de modèle C ?
Cette fonction de modèle, GetArrLength, est conçue pour déterminer la longueur d'un tableau. Pour ce faire, elle exploite la connaissance de la taille et du type du tableau, qui sont définis respectivement comme paramètres de modèle de type T et de taille int.
La fonction prend une référence à un tableau de type T et de taille comme un paramètre d’entrée. Cette référence est déclarée à l'aide de la syntaxe T(&)[size], ce qui signifie que le paramètre doit être une référence à un tableau de type T avec une taille de taille constante.
Lorsqu'il est appelé, le compilateur tente pour déduire les paramètres du modèle en fonction du type et de la taille du tableau transmis. Par exemple, si nous appelons GetArrLength avec un tableau d'entiers nommé a avec une taille de 10, le compilateur en déduira que T est un entier et la taille est 10, et la fonction renverra la valeur 10.
Cependant, il existe certaines limitations à l'implémentation de la fonction GetArrLength. Premièrement, l'utilisation d'un entier signé pour le paramètre de modèle et le type de retour peut entraîner des problèmes de tailles de tableau négatives. Pour des raisons pratiques, il est conseillé d'utiliser un type non signé, tel que std::size_t, à la fois pour le paramètre de modèle et le type de retour afin d'éviter tout comportement inattendu.
De plus, le résultat de la fonction n'est pas une expression constante. , bien que la taille d'un tableau soit intrinsèquement constante. Pour remédier à cette limitation, il existe des solutions plus robustes qui peuvent fournir un résultat constant, comme le bloc de code suivant :
template <std::size_t N> struct type_of_size { typedef char type[N]; }; template <typename T, std::size_t Size> typename type_of_size<Size>::type& sizeof_array_helper(T(&&)[Size]); #define sizeof_array(pArray) sizeof(sizeof_array_helper(pArray))
Cette technique génère un résultat constant en codant la taille du tableau dans la taille d'un type en utilisant une approche de métaprogrammation de modèles. Il garantit que le résultat n'est pas évalué dynamiquement et reste une expression constante.
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!