Quelle est une bonne façon propre de convertir un fichier std::vector<int> intVec
en std::vector<double> doubleVec
. Ou, plus généralement, convertir deux vecteurs de types convertibles?
Quelle est une bonne façon propre de convertir un fichier std::vector<int> intVec
en std::vector<double> doubleVec
. Ou, plus généralement, convertir deux vecteurs de types convertibles?
Réponses:
Utilisez std::vector
le constructeur de plage:
std::vector<int> intVec;
std::vector<double> doubleVec(intVec.begin(), intVec.end());
copy(v_int.begin(), v_int.end(), back_inserter(v_float));
ouv_float.resize(v_int.size()); copy(v_int.begin(), v_int.end(), v_float.begin());
std::distance()
"S'il s'agit d'un itérateur à accès aléatoire, la fonction utilise l'opérateur- pour le calculer. Sinon, la fonction utilise l'opérateur d'augmentation (opérateur ++) à plusieurs reprises." Donc, dans ce cas, la quantité d'éléments peut être trouvée en soustrayant les itérateurs. Si la bibliothèque standard est implémentée pour utiliser std :: distance pour une réserve initiale () est une autre question, mais godbolt.org/z/6mcUFh contient au moins un appel à std :: distance ().
std::copy(...)
fonction? Pourriez-vous ajouter cela à la réponse?