gpt4 book ai didi

c++ - 是否有用于指针删除的函数(对象)模板可用于在某处重复使用(boost,STL)?

转载 作者:行者123 更新时间:2023-11-30 01:23:55 24 4
gpt4 key购买 nike

如果我有一个将对象指针作为元素的 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*>());
};

最佳答案

如果(出于某种原因)您不能在集合中存储智能指针而不是原始指针,请考虑使用 Boost pointer container相反。

关于c++ - 是否有用于指针删除的函数(对象)模板可用于在某处重复使用(boost,STL)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14315660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com