私は自分std::vectorのunique_ptrs のためにこれを行ってきました:
m_stuff.push_back(std::unique_ptr<Thing> (new DerivedThing()));
これにより、ベクター内の要素が削除されたときにメモリが自動的に削除されます。
別のシナリオがあり、他の何かが経由してヒープメモリを作成するnewため、ジェネリックポインターが既に存在します。さて、私がこれをするとします:
m_stuff.push_back(std::unique_ptr<Thing> (thingy));
//thingy is Thing*
これを行うとすぐに、ベクトルがベクトルから削除されたときにdになるように、ベクトルm_stuffが制御できるようになったと安全に想定できますか? もちろん、他の場所にコピーまたは保存された場合、ポインターがぶら下がっている可能性がありますが、それは別の問題です。thingydeletethingy