Jaki jest dobry, czysty sposób konwertowania pliku std::vector<int> intVecna 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> intVecna std::vector<double> doubleVec. Albo, bardziej ogólnie, przekonwertować dwa wektory typów zamiennych?
Odpowiedzi:
Użyj std::vectorkonstruktora 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?