Re: 2 questions a propos des vecteurs & de leurs initialisations
mderie a écrit :
> Bonjour !
>
> Q1) Je voudrais savoir si on peut demander au compilateur d'inferer le
> type d'un element d'un vecteur :
>
> template<class T>
> class DumpVisitor
> {
> public:
> void operator()(T item)
> {
> cout << "Item = " << item << endl;
> }
> };
>
> vector<int> v;
> ...
> for_each(v.begin(), v.end(), DumpVisitor<int>); // OK
> for_each(v.begin(), v.end(), DumpVisitor<v.?>); // ?
>
> Le but : definir une macro qui ne prend qu'un parametre, le vector !
Le define vector<>::value_type to donne le type des données que
contients le vecteur.
>
> Q2) Est-ce qu'avec le TR1 on peut ecrire plus simplement ceci :
>
> vector<int> v;
> v.push_back(1900);
> v.push_back(1984);
> v.push_back(2000);
> v.push_back(2007);
> v.push_back(2008);
>
> Genre : vector<int> v = { 1900, 1984, 2000, 2007, 2008 };
Non mais tu peux le faire avec boost::array (std::tr1::array<>).
boost::array<int,5> v_init = { { 1900,1984, 2000, 2007,2008 } };
vector<int> v(v_init.begin(),v_init.end());
Sinon, il n'est pas trop du de se faire une fonction make_vector<>() qui
prends un tableau en entrée et retourne le vector<> correspondant puis
tu swap.
Michael
|