¿Cuál es una buena forma limpia de convertir un archivo std::vector<int> intVec
a std::vector<double> doubleVec
. ¿O, más generalmente, convertir dos vectores de tipos convertibles?
¿Cuál es una buena forma limpia de convertir un archivo std::vector<int> intVec
a std::vector<double> doubleVec
. ¿O, más generalmente, convertir dos vectores de tipos convertibles?
Respuestas:
Utilice std::vector
el constructor de rango:
std::vector<int> intVec;
std::vector<double> doubleVec(intVec.begin(), intVec.end());
copy(v_int.begin(), v_int.end(), back_inserter(v_float));
ov_float.resize(v_int.size()); copy(v_int.begin(), v_int.end(), v_float.begin());
std::distance()
"Si es un iterador de acceso aleatorio, la función usa el operador- para calcular esto. De lo contrario, la función usa el operador de aumento (operador ++) repetidamente". Entonces, en este caso, la cantidad de elementos se podría encontrar restando los iteradores. Si la biblioteca estándar está implementada para usar std :: distance para una reserva inicial () es otra cuestión, pero godbolt.org/z/6mcUFh al menos contiene una llamada a std :: distance ().
std::copy(...)
función? ¿Podría agregar eso a la respuesta?