変換するための良いクリーンな方法は何であるstd::vector<int> intVec
にはstd::vector<double> doubleVec
。または、より一般的には、変換可能な型の2つのベクトルを変換しますか?
変換するための良いクリーンな方法は何であるstd::vector<int> intVec
にはstd::vector<double> doubleVec
。または、より一般的には、変換可能な型の2つのベクトルを変換しますか?
回答:
std::vector
の範囲コンストラクタを使用します。
std::vector<int> intVec;
std::vector<double> doubleVec(intVec.begin(), intVec.end());
copy(v_int.begin(), v_int.end(), back_inserter(v_float));
またはv_float.resize(v_int.size()); copy(v_int.begin(), v_int.end(), v_float.begin());
std::distance()
「ランダムアクセス反復子の場合、関数はoperator-を使用してこれを計算します。それ以外の場合、関数は増加演算子(operator ++)を繰り返し使用します。」したがって、この場合、要素の量はイテレータを差し引くことでわかります。標準のライブラリがstd :: distanceを使用して初期のreserve()を実装するかどうかは別の問題ですが、godbolt.org / z / 6mcUFhには少なくともstd :: distance()への呼び出しが含まれています。
std::copy(...)
関数を使用することもできますか?それを答えに追加してもらえますか?