push_back
vector
ポインタが含まれている場合、1行で要素を作成できます。
vector<SomeClass*> v;
v.push_back(new SomeClass(initVar1));
v.push_back(new SomeClass(initVar2));
v.push_back(new SomeClass(initVar3));
push_back
非ポインター変数(必然的に他の変数のコピー)を使用してこのような1行を実行する方法はありますか?
もちろん、パブリックコピーコンストラクターがある場合は、次のようになります。
v.push_back(SomeClass(initVar));
とにかくコピーを作成することに注意してくださいpush_back
、それでそれは私には無意味に思えます。C ++ 11では、可能であればオブジェクトは移動構築されます。
また、頭痛の種をstd::unique_ptr<T>
避け、ベクター要素に生のポインターの代わりに使用してください。このようにrawポインターを使用すると、ベクターがメモリーを管理する機能が完全に無効になり、そもそもそれを使用する目的の半分が無効になります。