Apa cara yang bersih baik untuk mengkonversi std::vector<int> intVec
ke std::vector<double> doubleVec
. Atau, secara lebih umum, untuk mengubah dua vektor tipe konversi?
Apa cara yang bersih baik untuk mengkonversi std::vector<int> intVec
ke std::vector<double> doubleVec
. Atau, secara lebih umum, untuk mengubah dua vektor tipe konversi?
Jawaban:
Gunakan std::vector
konstruktor rentang:
std::vector<int> intVec;
std::vector<double> doubleVec(intVec.begin(), intVec.end());
copy(v_int.begin(), v_int.end(), back_inserter(v_float));
atauv_float.resize(v_int.size()); copy(v_int.begin(), v_int.end(), v_float.begin());
std::distance()
"Jika ini adalah iterator akses-acak, fungsi menggunakan operator- untuk menghitung ini. Jika tidak, fungsi menggunakan operator peningkatan (operator ++) berulang kali." Jadi dalam hal ini jumlah elemen dapat ditemukan dengan mengurangkan iterator. Apakah pustaka standar diimplementasikan untuk menggunakan std :: distance untuk cadangan awal () adalah pertanyaan lain, tapi godbolt.org/z/6mcUFh setidaknya berisi panggilan ke std :: distance ().
std::copy(...)
fungsinya? Bisakah Anda menambahkan itu ke jawabannya?