Heim >Backend-Entwicklung >C++ >Wie initialisiere ich ein nicht standardmäßiges konstruierbares „std::array' ohne Wiederholung in C?
Nicht standardmäßiges konstruierbares std::array ohne Wiederholung initialisieren
In C wird ein std::array nicht standardmäßiger konstruierbarer Elemente initialisiert kann eine Herausforderung sein. Standardinitialisierungsmethoden werden umständlich, wenn n, die Array-Größe, groß oder ein Vorlagenparameter ist.
Lösung:
Eine elegante Lösung nutzt eine Kombination aus Iteratoren und Vorlagen. So funktioniert es:
Wir definieren zwei Hilfsprogramme:
Mit diesen Dienstprogrammen können wir das std::array initialisieren in der Vorlagenfunktion f wie folgt:
<code class="cpp">template<typename T, int N> void f(T value) { std::array<T, N> items = repeat(value, genseq_t<N>{}); }</code>
Implementierungsdetails:
Beispiel:
Betrachten Sie eine Initialisierung mit dem Wert als Ganzzahl und n als Vorlagenparameter:
<code class="cpp">void f(int value) { std::array<T, 5> items = repeat(value, genseq_t<5>{}); }</code>
Hier werden Elemente angezeigt Initialisiert mit fünfmal wiederholtem Wert: {Wert, Wert, Wert, Wert, Wert}.
Vorteile:
Dieser Ansatz ist prägnanter, insbesondere wenn n ist groß. Dadurch entfällt auch die Notwendigkeit, den Wert manuell zu wiederholen.
Das obige ist der detaillierte Inhalt vonWie initialisiere ich ein nicht standardmäßiges konstruierbares „std::array' ohne Wiederholung in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!