我创建了unique_ptr的两个标准向量:
std::vector<std::unique_ptr<Student>> students;
std::vector<std::unique_ptr<Teacher>> teachers;
然后,我创建一个新对象并将其放在向量中:
students.push_back(std::unique_ptr<Student> (new Student()));
teachers.push_back(std::unique_ptr<Teacher> (new Teacher()));
在我必须做的所有操作之后,我该如何删除矢量?
Whitout unique_ptr我必须做一个循环并删除每个对象:
while (!students.empty())
{
delete students.back();
students.pop_back();
}
现在使用unique_ptr我该怎么做?
我知道我必须使用unique_ptr :: reset(我认为)。
答案 0 :(得分:15)
很简单:
students.clear();
这就是智能指针(如unique_ptr
)的用途 - 它们负责在适当的时候销毁指向的对象。