Initialisierung eines 2D-std::array
Trotz seines Aussehens wird ein 2D-std::array in C nicht auf die gleiche Weise initialisiert als 2D-C-Array. Der Hauptgrund dafür ist, dass ein std::array eine Klasse und kein Array ist.
Um ein 2D-std::array zu initialisieren, müssen Sie sowohl Klassenklammern als auch Member-Array-Klammern verwenden:
std::array<std::array<int, 3>, 2> a2 { { { {1, 2, 3} }, { { 4, 5, 6} } } };
Die äußeren geschweiften Klammern {} initialisieren die Klasse selbst, während die inneren geschweiften Klammern {{}} das darin enthaltene Member-C-Array initialisieren Klasse.
Vergleich mit der C-Array-Initialisierung
Um den Unterschied zu verdeutlichen, hier ein Vergleich mit der C-Array-Initialisierung:
struct B { int array[3]; }; struct A { B array[2]; }; B b = {{1,2,3}}; A a = {{ {{1,2,3}}, {{4,5,6}} }};
In C, Die äußeren geschweiften Klammern {} initialisieren die Struktur selbst, während die inneren geschweiften Klammern {{}} das Member-Array innerhalb der Struktur initialisieren. Diese Syntax ist analog zur Initialisierung eines 2D-std::array in C, mit der Ausnahme, dass im letzteren Fall die std::array-Klasse zusätzliche äußere Klammern benötigt, um die Klasse selbst zu initialisieren.
Das obige ist der detaillierte Inhalt vonWie initialisiere ich ein 2D-`std::array` in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!