나는 더 이상 필요하지 않은 포인터 목록을 가지고 있습니다. 그들 모두를 삭제하기 위해, 나는 일반적으로 목록을 반복 할 수std :: list의 내용 삭제
for (T* ptr: mylist) {
delete ptr;
}
을 또는 목록이 비어 때까지 나는 첫 번째 또는 마지막 요소를 삭제할 수 있습니다
모두, 선호하는 방법은 무엇while (!mylist.empty()) {
delete mylist.front(); //or mylist.back()
mylist.pop_front(); //or mylist.pop_back()
}
성능과 선명도?
'std :: list :: clear'은 완전히 새로운 것입니다. 그러나 좋은 제안. – user6245072
'clear'는 모든 요소를 목록에서 제거합니다. 제거시 스마트 포인터는 또한 보유하고있는 메모리를 해제합니다. 그러나 일반적인 포인터는 그렇지 않습니다. 따라서이 방법은 스마트 포인터에서만 작동합니다. 어쨌든, 오늘날 수동으로 객체를 삭제하는 것은 오류가 발생하기 쉽기 때문에 나쁜 관행으로 간주됩니다. –
마지막 비트를 알면 좋습니다. 모든 것에 감사드립니다. – user6245072