Der Grund für die begrenzte Initialisierung von 2D std::array
Obwohl std::array ein sehr prägnanter Container ist, gibt es bestimmte Einschränkungen bei der Initialisierung von 2D-Arrays. Lassen Sie uns untersuchen, warum eine einfache Initialisierung wie die folgende nicht funktioniert:
std::array<std::array<int, 3>, 2> a { {1, 2, 3}, {4, 5, 6} };
Fehler: zu viele Initialisierer für 'std::array
Der Schlüssel zum Verständnis dieses Fehlers liegt darin, dass std::array im Wesentlichen eine Datenstruktur ist, die ein C-Array enthält. Daher sind zum Initialisieren eines 2D-Std::Arrays zusätzliche geschweifte Klammern erforderlich:
std::array<std::array<int, 3>, 2> a { {{1, 2, 3}}, // 内层花括号用于初始化 C 数组 {{4, 5, 6}} };
Diese zusätzliche Verschachtelung in geschweiften Klammern ermöglicht es dem Compiler, C-Array-Mitgliedern Initialisierungsdaten korrekt zuzuweisen. Obwohl std::array eine C-Klasse ist, ähnelt ihre Initialisierungssyntax daher der eines C-Arrays.
Das obige ist der detaillierte Inhalt vonWarum kann ich ein 2D-std::array nicht wie ein normales 2D-Array initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!