7

我创建了两个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 (我认为)。

4

1 回答 1

19

这很简单:

students.clear();

这就是智能指针(如unique_ptr)的用途——它们负责在适当的时候销毁指向的对象。

于 2012-11-30T20:12:29.680 回答