如果我有一个将对象指针作为元素的 STL 容器,我将需要删除具有此类容器的类的析构函数中的指针。由于删除指针的操作
delete ptr_;
ptr_ = 0;
可能经常使用,我想知道是否有一个函数(或函数对象)模板可以做到这一点,在 boost 或 STL 中定义,或者在某个地方的标准定义为以下示例中定义的函数对象 DeletePointer:
#include <list>
#include <algorithm>
template<class Pointer>
class DeletePointer
{
public:
void operator()(Pointer t)
{
delete t;
t = 0;
}
};
using namespace std;
int main()
{
list<double*> doublePtrList;
doublePtrList.push_back(new double (0));
doublePtrList.push_back(new double (1));
doublePtrList.push_back(new double (2));
doublePtrList.push_back(new double (3));
for_each(doublePtrList.begin(), doublePtrList.end(), DeletePointer<double*>());
};