Initialisation d'un std::array 2D
Malgré son apparence, un std::array 2D en C ne s'initialise pas de la même manière sous forme de tableau C 2D. La raison fondamentale en est qu'un std::array est une classe, pas un tableau.
Pour initialiser un std::array 2D, vous devez utiliser à la fois des accolades de classe et des accolades de tableau membres :
std::array<std::array<int, 3>, 2> a2 { { { {1, 2, 3} }, { { 4, 5, 6} } } };
Les accolades externes {} initialisent la classe elle-même, tandis que les accolades internes {{}} initialisent le tableau membre C contenu dans le class.
Comparaison avec l'initialisation d'un tableau C
Pour clarifier la différence, voici une comparaison avec l'initialisation d'un tableau C :
struct B { int array[3]; }; struct A { B array[2]; }; B b = {{1,2,3}}; A a = {{ {{1,2,3}}, {{4,5,6}} }};
En C, les accolades externes {} initialisent la structure elle-même, tandis que les accolades internes {{}} initialisent le tableau de membres dans la structure. Cette syntaxe est analogue à l'initialisation d'un std::array 2D en C , sauf que dans ce dernier cas, la classe std::array nécessite des accolades externes supplémentaires pour initialiser la classe elle-même.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!