Bonjour tout le monde,
Par curiosit�, je me demandais s'il existait dans la STL un moyen d'initialiser un std::vector avec diff�rentes valeurs lors de la cr�ation de celui-ci.
Voici un petit exemple de ce que j'avais en t�te:
Soit une classe/structure Foo:
On pourrait initialiser le vecteur de la mani�re suivante:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 struct Foo { Foo(int _val = -1) : val(_val), atest(false); int val; bool atest; };
Ce code ne fonctionne pas bien �videmment mais est quand m�me tr�s proche de celui-ci qui est fonctionnel (en C++11):
Code : S�lectionner tout - Visualiser dans une fen�tre � part std::vector<Foo> fooVec(200, [x = 0]() mutable { return Foo(x++); });
L'inconv�niant ici c'est qu'il y a un parcours du vecteur qui est fait en plus.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 #include <algorithm> std::vector<Foo> fooVec(200); std::generate(fooVec.begin(), fooVec.end(), [x = 0] () mutable { return Foo(x++); });
J'ai vu �galement ici que l'on peut utiliser des it�rateurs mais je trouve qu'il y a beaucoup de code pour pas grand chose.
Partager