Maison >développement back-end >C++ >Comment une fonction de modèle peut-elle déterminer la taille d'un tableau C au moment de la compilation ?
Fonction de modèle pour déterminer la taille du tableau
Considérez la fonction de modèle ci-dessous :
template<typename T, size_t n> size_t array_size(const T (&)[n]) { return n; }
Le but de ce modèle consiste à déterminer la taille d’un tableau passé en argument. Passer un tableau par référence préserve sa taille, plutôt que simplement obtenir un pointeur.
Explication
Pour comprendre cela, considérez ce qui suit :
Dans notre fonction de modèle, le tableau est passé par référence, garantissant que sa taille est capturée. Le modèle déduit automatiquement la taille (n) et le type d'élément (T). Cela nous permet de l'utiliser comme :
size_t array_size(const int (&)[3]) { return 3; }
qui peut être utilisé comme suit :
size_t size_of_a = array_size(a);
Utilisation avancée
Il existe un variante de cette technique qui permet de déterminer la taille au moment de la compilation :
template<typename T, size_t n> char (& array_size(const T (&)[n]) )[n];
Ce modèle renvoie une référence à un tableau de type char avec size n. En tant que tel, le code suivant donnera la taille du tableau transmis au moment de la compilation :
size_t size_of_a = sizeof(array_size(a));
Cette construction permet des tailles de tableau déterminées au moment de la compilation, prenant en charge des actions telles que :
int havingSameSize[sizeof(array_size(a))];
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!