Constexpr-Array-Generierung in C 11
Frage:
Wie können wir einen Constexpr erstellen? nullbasiertes Array bis zu einer angegebenen Größe in C 11?
Antwort:
In C 14 wurde diese Aufgabe dank der Einführung von constexpr-Konstruktoren und -Schleifen einfacher. In C 11 müssen wir jedoch einen komplexeren Ansatz verfolgen.
Implementierung:
Schritt 1: Nutzung einer Klasse Vorlage mit einem Constexpr-Konstruktor
Wir definieren eine Klassenvorlage A, die die Arraygröße N annimmt als Template-Parameter. Es enthält einen constexpr-Konstruktor, der ein Array arr der Größe N initialisiert.
Schritt 2: Füllen des Arrays
Im constexpr-Konstruktor haben wir Iterieren Sie bis zu N und weisen Sie jedem Element von arr seinen entsprechenden Index zu. Dadurch können wir das Array mit der Sequenz 0 bis n-1 füllen.
Schritt 3: Verwendung
Wir können die A-Klasse instanziieren Vorlage, um eine Instanz des constexpr-Arrays zu erhalten. Durch Zugriff auf sein arr-Mitglied können wir mit seinen Elementen interagieren.
Hier ist ein Beispielcode, der diesen Ansatz in C 11 demonstriert:
#include <iostream> template<int N> struct A { constexpr A() : arr() { for (auto i = 0; i != N; ++i) arr[i] = i; } int arr[N]; }; int main() { constexpr auto a = A<4>(); for (auto x : a.arr) std::cout << x << '\n'; }
Dieser Code gibt die aus erwartete Sequenz von 0 bis 3, was die erfolgreiche Erstellung eines auf Null basierenden constexpr-Arrays in C 11 demonstriert.
Das obige ist der detaillierte Inhalt vonWie erstelle ich ein nullbasiertes Constexpr-Array in C 11?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!