Was ist ein guter sauberer Weg, um ein std::vector<int> intVec
zu 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> intVec
zu konvertieren std::vector<double> doubleVec
. Oder allgemeiner, um zwei Vektoren konvertierbarer Typen zu konvertieren?
Antworten:
Verwenden Sie std::vector
den 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?