Maison >développement back-end >C++ >Pourquoi ne puis-je pas initialiser un std::array 2D comme un tableau 2D classique ?
La raison de l'initialisation limitée de std::array 2D
Bien que std::array soit un conteneur très concis, il existe certains restrictions lors de l'initialisation des tableaux 2D. Voyons pourquoi une initialisation simple comme celle-ci ne fonctionne pas :
std::array<std::array<int, 3>, 2> a { {1, 2, 3}, {4, 5, 6} };
Erreur : trop d'initialiseurs pour 'std::array
La clé pour comprendre cette erreur est que std::array est essentiellement une structure de données contenant un tableau C. Par conséquent, pour initialiser un std::array 2D, des accolades supplémentaires sont nécessaires :
std::array<std::array<int, 3>, 2> a { {{1, 2, 3}}, // 内层花括号用于初始化 C 数组 {{4, 5, 6}} };
Cette imbrication d'accolades supplémentaire permet au compilateur d'attribuer correctement les données d'initialisation aux membres du tableau C. Par conséquent, même si std::array est une classe C, sa syntaxe d'initialisation est similaire à celle d'un tableau C.
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!