Maison > développement back-end > C++ > Pourquoi ne puis-je pas initialiser un std::array 2D comme un tableau 2D classique ?

Pourquoi ne puis-je pas initialiser un std::array 2D comme un tableau 2D classique ?

Patricia Arquette
Libérer: 2024-11-22 06:28:11
original
555 Les gens l'ont consulté

Why Can't I Initialize a 2D std::array Like a Regular 2D Array?

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}
};
Copier après la connexion

Erreur : trop d'initialiseurs pour 'std::array, 2u>'

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}}
};
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal