Heim >Backend-Entwicklung >C++ >Wie initialisiere ich ein 2D-std::array in C korrekt?

Wie initialisiere ich ein 2D-std::array in C korrekt?

DDD
DDDOriginal
2024-11-26 10:22:13490Durchsuche

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

Verstehen der 2D std::array-Initialisierungssyntax

Beim Versuch, ein 2D-Array vom Typ std::array zu initialisieren, 2> Wenn Sie geschweifte Klammern verwenden, kann es zu einem Fehler kommen. Dies liegt daran, dass std::array ein Aggregat ist, das ein Array im C-Stil kapselt. Um es ordnungsgemäß zu initialisieren, sind sowohl ein äußeres Klammerpaar für die Klasse selbst als auch innere Klammern für das eigentliche C-Array erforderlich.

Betrachten Sie das folgende Beispiel:

std::array<int, 3> a1 = {{1, 2, 3}}; // Valid initialization of a 1D array

Anwenden dieses Konzepts auf a 2D-Array:

std::array<std::array<int, 3>, 2> a2 {
    {{ {1, 2, 3} }, { {4, 5, 6} }} // Correct initialization
};

In diesem Beispiel:

  • Die äußeren Klammern { } Schließen Sie die gesamte Klasseninitialisierung ein.
  • Die inneren geschweiften Klammern { { } } schließen die einzelnen C-Array-Initialisierungen ein.

Die zusätzlichen geschweiften Klammern im richtigen Beispiel ermöglichen es dem Compiler, zwischen den Klassen zu unterscheiden Initialisierung und die Initialisierung des enthaltenen Arrays. Dies führt zu einer ordnungsgemäßen Kompilierung und Initialisierung des 2D-Arrays.

Das obige ist der detaillierte Inhalt vonWie initialisiere ich ein 2D-std::array in C korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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
Vorheriger Artikel:NFetchNächster Artikel:NFetch