彻底销毁动态分配对象的向量
Posted
技术标签:
【中文标题】彻底销毁动态分配对象的向量【英文标题】:Clean destruction of a vector of dynamically alocated objects 【发布时间】:2020-01-10 04:06:41 【问题描述】:是否有另一种方法可以释放分配对象的内存,而不是遍历向量/列表?
int main()
vector<Class*> v;
v.push_back(new Class(2,2));
v.push_back(new Class(65,65));
v.push_back(new Class(45,23));
for(Class* &it : v)
delete it;
return 0;
【问题讨论】:
RAII。std::vector<std::unique_ptr<Class>> v
完全不使用指针,或者将RAII
与std::unique_ptr
之类的容器一起使用。
或者,您可以简单地使用std::vector<Class>
并避免(可能)不必要的间接。
答案。走。在。这。回答。部分。不难理解。
【参考方案1】:
是的,有。它被称为smart pointers:
std::vector<std::unique_ptr<Class>> v;
v.push_back(std::make_unique<Class>(Class(2,5)));
但是,如果您没有理由使用动态分配的对象,则首选std::vector<Class>
。
Live
【讨论】:
以上是关于彻底销毁动态分配对象的向量的主要内容,如果未能解决你的问题,请参考以下文章