我試圖讓我的vector/list/...中的每個指針都被刪除,這個指針用超酷的lambda函數編寫。lambda + for_each +在STL容器上刪除
template <typename T>
void delete_clear(T const& cont)
{
for_each(T.begin(), T.end(), [](???){ ???->delete() });
}
我不知道該怎麼填寫???。任何幫助是極大的讚賞!
UPDATE:這是它應該是什麼樣子:
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爲了調用'明確()'就可以了。並在'cont'上調用它,而不是T; -p – 2010-05-19 20:12:02
如果您需要指針容器,請查看Boost指針容器庫(http://www.boost.org/doc/libs/1_43_0/libs/ptr_container/ DOC/ptr_container.html)。 – Philipp 2010-05-19 20:24:50
請勿參照容器。使用迭代器。 – pmr 2010-05-19 20:28:55