Estoy tratando de obtener un simple borrar cada puntero en mi función vector/list/... escrita con una función lambda ultra cool.lambda + for_each + eliminar en contenedores STL
template <typename T>
void delete_clear(T const& cont)
{
for_each(T.begin(), T.end(), [](???){ ???->delete() });
}
No tengo ni idea de qué rellenar para los ??? 's. ¡Cualquier ayuda es muy apreciada!
ACTUALIZACIÓN: Esto es lo que debe ser similar:
template <typename Container>
void delete_clear(Container &c)
{
for_each(c.begin(), c.end(), [](typename Container::value_type x){ delete x; });
c.clear();
}
Tendrá que hacer 'cont' no constante con el fin de llamar' clear() 'en él. Y llámelo en 'cont', no en T ;-p –
Si necesita contenedores de punteros, eche un vistazo a la biblioteca Boost Pointer Container (http://www.boost.org/doc/libs/1_43_0/libs/ptr_container/ doc/ptr_container.html). – Philipp
No tome un contenedor por referencia. Usa iteradores. – pmr