2012-11-30 3 views
4

내가 unique_ptr의 두 가지 표준 벡터 생성 : 어떻게 내가 할 수있는, 내가 할 일은 수술 후Unique_ptr의 STL 벡터 - 재설정 방법은 무엇입니까?

students.push_back(std::unique_ptr<Student> (new Student())); 
teachers.push_back(std::unique_ptr<Teacher> (new Teacher())); 

: 다음

std::vector<std::unique_ptr<Student>> students; 
std::vector<std::unique_ptr<Teacher>> teachers; 

을, 나는 새로운 객체를 생성하고 벡터에 넣어 벡터를 삭제 하시겠습니까? unique_ptr로 지금

while (!students.empty()) 
{ 
    delete students.back(); 
    students.pop_back(); 
} 

내가 무엇을해야 할 : 나는 루프를 수행하는 각 개체를 삭제했다 unique_ptr

Whitout?

나는 unique_ptr :: reset (나는 생각한다)을 사용해야한다는 것을 알고있다.

답변

13

그것은 간단하다 :

스마트 포인터 ( unique_ptr을 같은)을 위해 무엇이다
students.clear(); 

- 그들은 오브젝트를 파괴 돌볼 때 적절한 지적했다.

+0

기본적으로 clear()를 호출하면 모든 객체가 삭제됩니까? – LppEdd

+1

@ user1860848 예, 정확하게. 'clear()'를 호출하면 벡터의 객체 ('unique_ptr')가 삭제됩니다. 'unique_ptr'이 삭제되면, 가리키는 객체를 삭제합니다. – Angew

+0

작성하는 것이 맞습니까 : std :: vector > students; ? 그냥 호기심. – LppEdd