delete *the_object_iterator;
すべてのオブジェクトに対して実行する STL ユーティリティ/アルゴリズムはありますか? clear()
無事に行けるように?STL コンテナは でset
、オブジェクトは で作成された C++ クラスへのポインタnew
です。
ブーストが最適なソリューションのようです。私の目標は、コピー不可能なクラスでのコピー構築を避けることでした。
delete *the_object_iterator;
すべてのオブジェクトに対して実行する STL ユーティリティ/アルゴリズムはありますか? clear()
無事に行けるように?STL コンテナは でset
、オブジェクトは で作成された C++ クラスへのポインタnew
です。
ブーストが最適なソリューションのようです。私の目標は、コピー不可能なクラスでのコピー構築を避けることでした。
スマート ポインターを使用してクラス ポインターを保持する
std::set<std::unique_ptr<MyClass> > mySet;
私の知る限り、すべてのオブジェクトを削除する標準アルゴリズムはありません。ただし、簡単に作成できます。
template< typename T > invoke_delete( T* ptr ){ delete ptr; }
std::for_each( set.begin(), set.end(), &invoke_delete< set_value_type > );
ブースト ポインター コンテナーが最適です。
動的に割り当てられたオブジェクトを格納するだけではありません。ただし、オブジェクトは参照としてアクセスできるため、オブジェクトで標準アルゴリズムを使用するのがはるかに簡単になります。
boost::ptr_set<MyClass> setData;
setData.insert(new MyClass);