1. ホーム
  2. c++

ベクター:初期化か予備か?

2023-08-04 18:07:35

質問

ベクトルの大きさはわかっているのですが、初期化するのに一番良い方法はどれでしょうか?

オプション1です。

vector<int> vec(3); //in .h
vec.at(0)=var1;     //in .cpp
vec.at(1)=var2;     //in .cpp
vec.at(2)=var3;     //in .cpp

オプション2です。

vector<int> vec;     //in .h
vec.reserve(3);      //in .cpp
vec.push_back(var1); //in .cpp
vec.push_back(var2); //in .cpp
vec.push_back(var3); //in .cpp

Option1よりOption2の方がいいと思うのですが。そうでしょうか?他の選択肢はありますか?

どのように解決するのですか?

両方のバリアントは異なるセマンティクスを持ち、つまりリンゴとオレンジを比較していることになります。

最初のものはデフォルトで初期化されたn個の値のベクトルを提供し、2番目のものはメモリを確保しますが、初期化はしません。

よりニーズに合ったもの、つまりある状況において何が"better"であるかを選択してください。