Vorlagenfunktion zur Bestimmung der Array-Größe
Beachten Sie die folgende Vorlagenfunktion:
template<typename T, size_t n> size_t array_size(const T (&)[n]) { return n; }
Der Zweck dieser Vorlage besteht darin, die Größe eines als Argument übergebenen Arrays zu bestimmen. Die Übergabe eines Arrays als Referenz behält seine Größe bei, anstatt einfach einen Zeiger zu erhalten.
Erklärung
Um dies zu verstehen, beachten Sie Folgendes:
In unserer Vorlagenfunktion wird das Array als Referenz übergeben, um sicherzustellen, dass seine Größe erfasst wird. Die Vorlage leitet automatisch die Größe (n) und den Elementtyp (T) ab. Dadurch können wir es verwenden als:
size_t array_size(const int (&)[3]) { return 3; }
was wie folgt verwendet werden kann:
size_t size_of_a = array_size(a);
Erweiterte Verwendung
Es gibt eine Variante dieser Technik, die eine Größenbestimmung zur Kompilierzeit ermöglicht:
template<typename T, size_t n> char (& array_size(const T (&)[n]) )[n];
Diese Vorlage gibt einen Verweis auf ein Array vom Typ char zurück mit Größe n. Daher gibt der folgende Code die Größe des übergebenen Arrays zur Kompilierungszeit an:
size_t size_of_a = sizeof(array_size(a));
Dieses Konstrukt ermöglicht durch die Kompilierungszeit bestimmte Array-Größen und unterstützt Aktionen wie:
int havingSameSize[sizeof(array_size(a))];
Das obige ist der detaillierte Inhalt vonWie kann eine Vorlagenfunktion die Größe eines C-Arrays zur Kompilierungszeit bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!