Il existe un constructeur de vector qui prend deux itérateurs en paramètre. Le constructeur copie tous les éléments dans [first, last[ ([first, last) en notation anglosaxone) dans le vecteur lors de sa construction.
Ici, les itérateurs sont des pointeurs vers éléments dans un tableau statique C. Je préfère l'écriture &T1[0] et &T1[7], ou mieux: std::begin(T1), std::end(T1) (C++ 11). Quand on passe le nom d'un tableau à quelque chose qui attend un pointeur, il y a une dégénérescence (decay en VO) implicite du tableau en pointeur -- héritage du C. C'est ce qu'il se passe ici. Il y a beaucoup de choses qui se mélangent dans l'extrait de code qui te chagrine.
On peut faire un constructeur variadique avec les déductions et déduire le nombre d'élément et le type de std::array. Donc si, ça marche et c'est franchement cool
Mais je ne sais plus si c'est dans le C++20 ou pas.
D'un autre côté, si on peut ecrire du code generique comme j'ai fait (soit avec des templates, de la deduction de type ou des concepts), est-ce que c'est si bof ?
void foo(CollectionConcept const& v) {
for (auto const& i: v)
std::cout << i << std::endl;
}
On declare et on se focus que sur ce qui est important. Peut importe le type soujacent. (Surtout que si initializer_list convient, pourquoi se priver ? Et pourquoi ajouter le cout de la creation d'un std::array ?)
Effectivement j'aurais pu réduire la question, mais je voulais exprimer ce que je pensais comprendre :)
Tableau passé en Paramètres d'un vecteur
× 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.
Discord NaN. Mon site.
Discord NaN. Mon site.