Я создаю два стандартных вектора 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 (я думаю).
Это просто:
students.clear();
Это то, что умные указатели (как unique_ptr
) для — они заботятся об уничтожении объекта, на который указывает, когда это необходимо.
Других решений пока нет …