STL算法删除容器中的所有对象
STL algorithm to delete all the objects in a container?
是否有一个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);
相关文章:
- 算法不适用于非常量对象的const_iterator
- 在 stl 算法中使用函数对象
- 排序算法,使用模板按内部数据对对象进行排序
- 在现有数据结构上使用BGL算法需要什么(边和顶点作为矢量<对象*>)?
- 分类算法和对象指针的问题
- 找到多组对象的最佳匹配的算法
- 为对象向量实现快速排序算法
- 使用sort()算法C 排序对象列表
- OpenCV对象在训练级联后检测算法会冻结
- 如何为涉及对象成员、间接寻址和强制转换的排序算法实现lambda函数
- 将排序算法与对象类合并
- 构建JSON对象的算法
- 是否可以混合使用虚拟函数和函数对象以使用标准算法
- 建议一个合适的算法来合并包含类对象的两个数组(不重复)
- 随机生成对象的算法
- 通过引用将函数对象传递到 std 算法中
- c++:应用于向量的STL算法也适用于其他容器对象
- 在对象(C++)的指针向量上使用STL算法
- C++对对象的向量进行迭代,并将STL算法应用于成员变量
- 是二维动态对象 O(n^2) 碰撞的最快算法