Ne dönüştürmek için iyi bir temiz yoldur std::vector<int> intVec
için std::vector<double> doubleVec
. Veya, daha genel olarak, dönüştürülebilir türlerdeki iki vektörü dönüştürmek için?
Ne dönüştürmek için iyi bir temiz yoldur std::vector<int> intVec
için std::vector<double> doubleVec
. Veya, daha genel olarak, dönüştürülebilir türlerdeki iki vektörü dönüştürmek için?
Yanıtlar:
std::vector
Aralık yapıcısını kullanın :
std::vector<int> intVec;
std::vector<double> doubleVec(intVec.begin(), intVec.end());
copy(v_int.begin(), v_int.end(), back_inserter(v_float));
veyav_float.resize(v_int.size()); copy(v_int.begin(), v_int.end(), v_float.begin());
std::distance()
"Bu bir rastgele erişim yineleyicisiyse, işlev bunu hesaplamak için işleci kullanır. Aksi takdirde, işlev art arda artırma işlecini (işleç ++) kullanır." Yani bu durumda yineleyiciler çıkarılarak elemanların miktarı bulunabilir. Standart kitaplığın bir ilk rezerv () için std :: distance kullanılıp kullanılmayacağı başka bir sorudur, ancak godbolt.org/z/6mcUFh en azından std :: distance () çağrısı içerir.
std::copy(...)
o zaman işlevi de kullanabilir misin? Bunu cevaba ekler misin?