Jaki jest dobry, czysty sposób konwertowania pliku std::vector<int> intVec
na std::vector<double> doubleVec
. Albo, bardziej ogólnie, przekonwertować dwa wektory typów zamiennych?
Jaki jest dobry, czysty sposób konwertowania pliku std::vector<int> intVec
na std::vector<double> doubleVec
. Albo, bardziej ogólnie, przekonwertować dwa wektory typów zamiennych?
Odpowiedzi:
Użyj std::vector
konstruktora zakresu:
std::vector<int> intVec;
std::vector<double> doubleVec(intVec.begin(), intVec.end());
copy(v_int.begin(), v_int.end(), back_inserter(v_float));
lubv_float.resize(v_int.size()); copy(v_int.begin(), v_int.end(), v_float.begin());
std::distance()
„Jeśli jest to iterator o swobodnym dostępie, funkcja używa operatora- do obliczenia tego. W przeciwnym razie funkcja wielokrotnie używa operatora zwiększania (operator ++)”. Więc w tym przypadku ilość elementów można znaleźć odejmując iteratory. To, czy biblioteka standardowa jest zaimplementowana do używania std :: distance dla początkowej rezerwacji (), to inna kwestia, ale godbolt.org/z/6mcUFh zawiera przynajmniej wywołanie std :: distance ().
std::copy(...)
funkcji? Czy możesz dodać to do odpowiedzi?