Tôi đang cố gắng xóa đơn giản mọi con trỏ trong hàm vectơ/danh sách/... của tôi được viết bằng hàm lambda siêu mát mẻ.lambda + for_each + xóa trên vùng chứa STL
template <typename T>
void delete_clear(T const& cont)
{
for_each(T.begin(), T.end(), [](???){ ???->delete() });
}
Tôi không biết phải điền thông tin gì cho ???. Bất kỳ trợ giúp nào cũng được đánh giá rất cao!
UPDATE: Đây là những gì nó sẽ giống như thế:
template <typename Container>
void delete_clear(Container &c)
{
for_each(c.begin(), c.end(), [](typename Container::value_type x){ delete x; });
c.clear();
}
Bạn sẽ cần phải thực hiện 'cont' không const để gọi' rõ ràng() 'trên đó. Và gọi nó là 'cont', không phải T ;-p –
Nếu bạn cần container con trỏ, hãy xem thư viện Boost Pointer Container (http://www.boost.org/doc/libs/1_43_0/libs/ptr_container/ doc/ptr_container.html). – Philipp
Không dùng thùng chứa theo tham chiếu. Sử dụng trình vòng lặp. – pmr