아주 간단한 람다 함수로 작성된 vector/list/... 함수의 모든 포인터를 삭제하는 중입니다.STL 컨테이너의 lambda + for_each + delete
template <typename T>
void delete_clear(T const& cont)
{
for_each(T.begin(), T.end(), [](???){ ???->delete() });
}
나는 ???을 기입 할 단서가 없습니다. 어떤 도움이라도 대단히 감사합니다!
업데이트 : 이것은 어떻게 보일지입니다 :
template <typename Container>
void delete_clear(Container &c)
{
for_each(c.begin(), c.end(), [](typename Container::value_type x){ delete x; });
c.clear();
}
당신은 그것을') (삭제'를 호출하기 위해'있도록 cont' const가 아닌해야합니다. 그리고 T가 아니라'cont'라고 부르십시오. -p –
포인터 컨테이너가 필요하면 Boost Pointer Container 라이브러리 (http://www.boost.org/doc/libs/1_43_0/libs/ptr_container/)를보십시오. doc/ptr_container.html). – Philipp
참고로 용기를 가져 가지 마십시오. 반복자를 사용하십시오. – pmr