4

是否有delete *the_object_iterator;对所有对象执行 STL 实用程序/算法?这样我就可以clear()安全了?STL 容器是 a set,对象是指向用 . 创建的 C++ 类的指针new

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

4

3 回答 3

16

使用智能指针保存类指针

std::set<std::unique_ptr<MyClass> > mySet;
于 2011-09-29T20:26:16.623 回答
10

据我所知,没有删除所有对象的标准算法。但是,您可以轻松构建一个:

template< typename T > invoke_delete( T* ptr ){ delete ptr; }

std::for_each( set.begin(), set.end(), &invoke_delete< set_value_type > );
于 2011-09-29T20:26:28.743 回答
7

Boost指针容器是要走的路。

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

boost::ptr_set<MyClass>   setData;

setData.insert(new MyClass);
于 2011-09-29T20:45:46.900 回答