2011-10-26 13 views
4

可能性の重複:
ベクトル<int>をベクトル<double>に割り当てるのは安全ですか?

C++ convert vector<int> to vector<double>

私はそれらを整数配列から値を割り当てる必要があり、特定の計算のための変数を初期化します。 だから私は実行します。

vector<double> vd; 
int ai[N]; // Filled somewhere else 

vd.assign(ai, ai+N); 

これは、GCC 4.6.1 Linuxで動作します。しかし、それは常に正しいですか?または私は常緑に返す必要があります:

vd.resize(N); 
for(int i=0; i < N; ++i) vd[i] = (double)ai[i]; 

感謝を明確にするために!

+0

すでに([C-変換-vectorintツーvectordouble]で答えhttp://stackoverflow.com/questions/6399090/c-convert-vectorint-to- vectordouble)(なぜ私の最初の検索では出てこないの?ミステリー)。しかし、ここでもそれがうまくいくという事実があります。 – mvalle

+0

私はそれが重複しているので、あなたの質問を近くにマークしました... – Nim

答えて

0

assignはテンプレートなので、これは安全だと思います。 http://www.cplusplus.com/reference/stl/vector/assign/を参照してください。実装は整数からdoubleを割り当てますが、これは基本的にあなたの他の解決法と変わりません。 /usr/include/c++/4.6/bits/stl_vector.hのヘッダーを確認すると、コンストラクタのように見え、両方が同じ内部関数_M_assign_dispatchを呼び出します。

3

暗黙の変換が行われるため、安全です。そして、なぜその建設中にベクトルを初期化しない:

std::vector<double> vd(ai, ai + N); 
関連する問題