Salut,
Ben quasiment tout est dans le titre : j'aimerais savoir s'il y a une méthode plus efficace que l'insertion de chaque élément dans vector<class mère*> pour faire cette copie.
Merci
Version imprimable
Salut,
Ben quasiment tout est dans le titre : j'aimerais savoir s'il y a une méthode plus efficace que l'insertion de chaque élément dans vector<class mère*> pour faire cette copie.
Merci
Si tu faisais une copie entre deux vector de type identique, il y aurait de toute façon recopie des éléments un par un.
Le mieux que tu puisses faire c'est trouver une syntaxe concise, avec par exemple std::copy, ou std::vector::assign.
Un std::transform ?
Code:
1
2
3
4
5
6
7
8
9 struct ToMere { Mere* operator() (Derive* d) { return static_cast<Mere*>(d); } }; std::transform(derives.begin(),derives.end(),meres.begin(),ToMere());
C'est beaucoup de code pour pas grand chose, non ? ;)
Comme la conversion est automatique, il n'y a qu'à utiliser une fonction qui copie les éléments, le reste sera fait tout seul.
Code:meres.assign(derives.begin(),derives.end());
Oui, c'est vrai.
My apologies.
Mais si il veut impressionner, mon code est mieux :aie:
En tout cas, std::copy ou assign c'est kif-kif.
Pas toujours ! Je suis souvent encore impressionné par la puissance du C++ entre le rapport ligne de code écrite / opérations effectuées... ;) Le tout avec la vitesse d'exécution du C, ce qui n'est pas rien! 8-)Citation:
Envoyé par Alp