これは実際の状況によって異なります。
オブジェクトが小さく、オブジェクトのコピーが軽量である場合、データを stl コンテナー内に格納するのは簡単で、ライフタイム管理について心配する必要がないため、管理が簡単だと思います。
オブジェクトが大きく、デフォルトのコンストラクターを持つことが意味をなさない場合、またはオブジェクトのコピーが高価な場合は、おそらくポインターを使用して格納することをお勧めします。
オブジェクトへのポインターを使用する場合は、Boost Pointer Container Libraryを参照してください。このブースト ライブラリは、動的に割り当てられたオブジェクトで使用するために、すべての STL コンテナーをラップします。
各ポインター コンテナー (ptr_vector など) は、オブジェクトがコンテナーに追加されるとそのオブジェクトの所有権を取得し、それらのオブジェクトの有効期間を管理します。また、参照によって ptr_ コンテナ内のすべての要素にアクセスします。これにより、次のようなことができます
class BigExpensive { ... }
// create a pointer vector
ptr_vector<BigExpensive> bigVector;
bigVector.push_back( new BigExpensive( "Lexus", 57700 ) );
bigVector.push_back( new BigExpensive( "House", 15000000 );
// get a reference to the first element
MyClass& expensiveItem = bigList[0];
expensiveItem.sell();
これらのクラスは STL コンテナーをラップし、すべての STL アルゴリズムで動作するため、非常に便利です。
コンテナー内のポインターの所有権を呼び出し元に転送する機能もあります (ほとんどのコンテナーの release 関数を介して)。