使用模板删除任何容器

Sam*_*rsa 9 c++ templates visual-studio-2008

我有很多代码,我删除其中有指针的向量容器,也就是说,我必须首先删除所有指针,然后清除容器.每次我迭代并手动删除指针(我知道stl :: algorithms for_each).为了绕过所有代码,我创建了一个模板来删除所有带指针的向量容器.到现在为止还挺好.

现在我还有几个容器类型,包括映射,并发容器等.就删除而言,最终都具有相同的功能.DeleteContainer(std::vector<T*>& VecIn)我所拥有的功能只能用于上面提到的向量.有没有办法让它足够通用,可以在所有容器上工作?

编辑:谢谢你的所有答案,我希望我能选择不止一个.对于任何偶然发现这个问题的人,请阅读所有答案,而不仅仅是所选答案,因为它们都提供了很好的信息.

ice*_*ime 7

你已经有了一个有效的答案,但只是提供一个替代方案,我相信你应该考虑使用Boost Pointer Container并让它处理内存管理:

因此,该库提供了类似于标准的容器,用于存储堆分配或克隆的对象(或者在映射的情况下,映射的对象必须是堆分配或克隆的对象).对于每个标准容器,都有一个等效的指针容器,它以异常安全的方式获取对象的所有权.