Maison > développement back-end > C++ > le corps du texte

Comment initialiser correctement un `std::array` 2D en C à l'aide d'accolades ?

Linda Hamilton
Libérer: 2024-11-24 06:22:24
original
953 Les gens l'ont consulté

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

Initialisation d'un std::array 2D avec des accolades

Lorsque vous travaillez avec C, l'initialisation d'un std::array 2D à l'aide d'accolades peut être un défi . L'extrait de code suivant illustre le problème :

std::array<std::array<int, 3>, 2> a {
    {1, 2, 3},
    {4, 5, 6}
};
Copier après la connexion

Cette approche ne parvient pas à se compiler, l'erreur du compilateur indiquant trop d'initialiseurs pour std::array, 2u>. Pour comprendre pourquoi cela se produit, il est crucial de connaître l'implémentation sous-jacente de std::array.

std::array Internals

std::array est un agrégat qui englobe un tableau de style C. Par conséquent, pour l'initialiser correctement, il nécessite des accolades externes pour la classe elle-même et des accolades internes pour le membre du tableau C :

std::array<int, 3> a1 = { { 1, 2, 3 } };
Copier après la connexion

L'extension de cette logique à un tableau 2D entraîne l'initialisation valide suivante :

std::array<std::array<int, 3>, 2> a2 { { { {1, 2, 3} }, { { 4, 5, 6} } } };
Copier après la connexion

Dans cet exemple :

  • "{ { {1, 2, 3} }, { { 4, 5, 6} } }" sont les accolades de classe, entourant l'initialisation du tableau 2D.
  • "{{1, 2, 3}, {4, 5, 6}}" sont les accolades pour les tableaux internes de style C, initialiser chaque ligne du tableau 2D.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal