Heim > Backend-Entwicklung > C++ > Wie kann eine Vorlagenfunktion die Größe eines C-Arrays zur Kompilierungszeit bestimmen?

Wie kann eine Vorlagenfunktion die Größe eines C-Arrays zur Kompilierungszeit bestimmen?

Barbara Streisand
Freigeben: 2024-12-24 04:28:13
Original
233 Leute haben es durchsucht

How Can a Template Function Determine the Size of a C   Array at Compile Time?

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;
}
Nach dem Login kopieren

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:

  • Die Übergabe eines Arrays an eine Funktion ohne Referenz führt zum Zerfall des Zeigers und zum Verlust der Größeninformationen des Arrays.
  • Referenzen an Arrays behalten jedoch die Größe und den Typ des Arrays bei.

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;
}
Nach dem Login kopieren

was wie folgt verwendet werden kann:

size_t size_of_a = array_size(a);
Nach dem Login kopieren

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];
Nach dem Login kopieren

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));
Nach dem Login kopieren

Dieses Konstrukt ermöglicht durch die Kompilierungszeit bestimmte Array-Größen und unterstützt Aktionen wie:

int havingSameSize[sizeof(array_size(a))];
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage