Pour ton 2eme code, c'est de la "brace elision" (mais clang met un warning sur ton code, a priori tu devrais avoir un = pour que la brace elision soit acceptee)
Pour le premier code, il faut ajouter des {}
std::array<std::array<int,3>,3> t {{{1,2,3},{4,5,6},{7,8,9}}};
D'une manière général c'est de toute façon pas très élégant d'avoir un tableau de tableau ormis le fait de pouvoir facilement faire tab[r][c], la plupart du temps on préferera utiliser un tableau linéarisé.
git is great because Linus did it, mercurial is better because he didn't.
Du coup quelle est la différence de logique entre ces deux lignes ? (trouvées sur le lien que tu as donné).
Ces 2 syntaxes sont equivalentes :
std::array<int, 3> std_ar2 = {{1, 2, 3}}; // std::array is an aggregate
std::array<int, 3> std_ar2 {{1, 2, 3}}; // std::array is an aggregate
La 3eme est la meme avec le signe = et avec la brace elision
std::array<int, 3> std_ar2 = {1, 2, 3};
markand a écrit:
D'une manière général c'est de toute façon pas très élégant d'avoir un tableau de tableau ormis le fait de pouvoir facilement faire tab[r][c], la plupart du temps on préferera utiliser un tableau linéarisé.
Bof pour l'elegance. On linearise surtout pour les tableaux dynamiques, parce que sinon les donnees sont pas contigues en memoire (perte de performance avec les cache miss), mais pour des tableaux statiques, c'est osef. Et ca permet d'utiliser [i][k] plutot que (i,j) ou [i*N+j].
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Discord NaN. Mon site.
git is great because Linus did it, mercurial is better because he didn't.
Discord NaN. Mon site.