STL算法删除容器中的所有对象

STL algorithm to delete all the objects in a container?

本文关键字:对象 算法 删除 STL      更新时间:2023-10-16

是否有一个STL实用程序/算法在所有对象上做delete *the_object_iterator; ?这样我就可以安全地进行clear()了?STL容器是一个set,对象是指向用new创建的c++类的指针。

Boost似乎是最好的解决方案。我的目标是避免对不可复制类进行复制构造。

使用智能指针来保存类指针

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指针容器是可行的方法。

不仅存储动态分配的对象。但是对象可以作为引用访问,这使得在对象上使用标准算法变得容易得多。

boost::ptr_set<MyClass>   setData;
setData.insert(new MyClass);