Was ist ein guter sauberer Weg, um ein std::vector<int> intVeczu konvertieren std::vector<double> doubleVec. Oder allgemeiner, um zwei Vektoren konvertierbarer Typen zu konvertieren?
Was ist ein guter sauberer Weg, um ein std::vector<int> intVeczu konvertieren std::vector<double> doubleVec. Oder allgemeiner, um zwei Vektoren konvertierbarer Typen zu konvertieren?
Antworten:
Verwenden Sie std::vectorden Bereichskonstruktor:
std::vector<int> intVec;
std::vector<double> doubleVec(intVec.begin(), intVec.end());
copy(v_int.begin(), v_int.end(), back_inserter(v_float));oderv_float.resize(v_int.size()); copy(v_int.begin(), v_int.end(), v_float.begin());
std::distance()"Wenn es sich um einen Iterator mit wahlfreiem Zugriff handelt, verwendet die Funktion den Operator-, um dies zu berechnen. Andernfalls verwendet die Funktion den Erhöhungsoperator (Operator ++) wiederholt." In diesem Fall könnte die Anzahl der Elemente durch Subtrahieren der Iteratoren ermittelt werden. Ob die Standardbibliothek implementiert ist, um std :: distance für eine anfängliche Reserve () zu verwenden, ist eine andere Frage, aber godbolt.org/z/6mcUFh enthält zumindest einen Aufruf von std :: distance ().
std::copy(...)Funktion nutzen? Könnten Sie das der Antwort hinzufügen?