0

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行を実行する方法はありますか?

4

1 に答える 1

6

もちろん、パブリックコピーコンストラクターがある場合は、次のようになります。

v.push_back(SomeClass(initVar));

とにかくコピーを作成することに注意してくださいpush_back、それでそれは私には無意味に思えます。C ++ 11では、可​​能であればオブジェクトは移動構築されます。

また、頭痛の種をstd::unique_ptr<T>避け、ベクター要素に生のポインターの代わりに使用してください。このようにrawポインターを使用すると、ベクターがメモリーを管理する機能が完全に無効になり、そもそもそれを使用する目的の半分が無効になります。

于 2013-02-28T00:31:23.973 に答える