Heim > Backend-Entwicklung > C++ > Hauptteil

Wie initialisiere ich ein 2D-`std::array` in C mithilfe von geschweiften Klammern korrekt?

Linda Hamilton
Freigeben: 2024-11-24 06:22:24
Original
953 Leute haben es durchsucht

How to Correctly Initialize a 2D `std::array` in C   Using Braces?

Initialisierung eines 2D-std::array mit geschweiften Klammern

Beim Arbeiten mit C kann die Initialisierung eines 2D-std::array mit geschweiften Klammern eine Herausforderung sein . Der folgende Codeausschnitt veranschaulicht das Problem:

std::array<std::array<int, 3>, 2> a {
    {1, 2, 3},
    {4, 5, 6}
};
Nach dem Login kopieren

Dieser Ansatz kann nicht kompiliert werden, da der Compilerfehler darauf hinweist, dass zu viele Initialisierer für std::array, 2u> vorhanden sind. Um zu verstehen, warum dies geschieht, ist es wichtig, die zugrunde liegende Implementierung von std::array zu kennen.

std::array Internals

std::array ist ein Aggregat, das umfasst ein Array im C-Stil. Um es korrekt zu initialisieren, sind daher äußere geschweifte Klammern für die Klasse selbst und innere geschweifte Klammern für das C-Array-Mitglied erforderlich:

std::array<int, 3> a1 = { { 1, 2, 3 } };
Nach dem Login kopieren

Die Erweiterung dieser Logik auf ein 2D-Array führt zu der folgenden gültigen Initialisierung:

std::array<std::array<int, 3>, 2> a2 { { { {1, 2, 3} }, { { 4, 5, 6} } } };
Nach dem Login kopieren

In diesem Beispiel:

  • "{ { {1, 2, 3} }, { { 4, 5, 6} } }" sind die geschweiften Klammern der Klasse, die die Initialisierung des 2D-Arrays einschließen.
  • "{{1, 2, 3}, {4, 5, 6}}" sind die geschweiften Klammern Für die inneren Arrays im C-Stil wird jede Zeile des 2D-Arrays initialisiert.

Das obige ist der detaillierte Inhalt vonWie initialisiere ich ein 2D-`std::array` in C mithilfe von geschweiften Klammern korrekt?. 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