Qual è un buon modo pulito per convertire un file std::vector<int> intVec
in std::vector<double> doubleVec
. O, più in generale, convertire due vettori di tipi convertibili?
Qual è un buon modo pulito per convertire un file std::vector<int> intVec
in std::vector<double> doubleVec
. O, più in generale, convertire due vettori di tipi convertibili?
Risposte:
Usa std::vector
il costruttore dell'intervallo di:
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()
"Se si tratta di un iteratore ad accesso casuale, la funzione utilizza l'operatore- per calcolarlo. In caso contrario, la funzione utilizza ripetutamente l'operatore di aumento (operatore ++)." Quindi in questo caso la quantità di elementi potrebbe essere trovata sottraendo gli iteratori. Se la libreria standard è implementata per usare std :: distance per una riserva iniziale () è un'altra domanda, ma godbolt.org/z/6mcUFh contiene almeno una chiamata a std :: distance ().
std::copy(...)
funzione allora? Potresti aggiungerlo alla risposta?