Cette question s'inscrit dans la continuité de Comment convertir un tableau en vecteur en C++ ? On m'a suggéré d'utiliser une technique très délicate avec un peu d'eau. sizeof()
manipulations.
En fait, je m'attendais à trouver une fonction dans la bibliothèque standard pour convertir un tableau en n'importe quel conteneur. J'ai essayé d'en écrire une moi-même et cela ne semble pas très difficile :
#include <list>
#include <vector>
// from C-array to std-container
template<typename T, int N>
auto make_copy(auto (&from)[N])
{ return T{ std::begin(from), std::end(from) }; }
// from std::container to another std::container
template<typename T>
auto make_copy(const auto &from)
{ return T{ std::begin(from), std::end(from) }; }
int main()
{
int myArray[2] = { 1, 2 };
auto myVector = make_copy<std::vector<int>>( myArray );
auto myList = make_copy<std::list<int>>( myVector );
return myList.size();
}
https://gcc.godbolt.org/z/fv4ddadax
Existe-t-il quelque chose de similaire à make_copy
dans la bibliothèque standard C++ ou dans boost
?