Tengo un montón de código donde estoy eliminando contenedores vectoriales que tienen punteros en ellos, es decir, primero tengo que eliminar todos los punteros y luego borrar el contenedor. Cada vez iteraba y eliminaba los punteros manualmente (conozco stl :: algorithms for_each). Para eludir todo ese código, creé una plantilla para eliminar todos los contenedores vectoriales que tienen un puntero. Hasta aquí todo bien.Eliminar cualquier contenedor usando plantillas
Ahora tengo varios tipos más de contenedores, incluidos mapas, contenedores simultáneos, etc. todos con la misma funcionalidad al final en cuanto a eliminación. La función DeleteContainer(std::vector<T*>& VecIn)
que tengo solo puede funcionar en vectores como se mencionó anteriormente. ¿Hay alguna manera de hacerlo lo suficientemente genérico como para trabajar en todos los contenedores?
EDIT: Gracias por todas las respuestas, me gustaría poder seleccionar más de una. A cualquiera que se tropiece con esta pregunta, lea todas las respuestas y no solo la seleccionada, ya que todas proporcionan información excelente.
Esto no es muy C++ ish. El contenedor no es una excepción segura ya que está llamando al eliminador manualmente. Debe envolver el contenedor en un objeto ab para que RAII llame a la función automáticamente cuando el contenedor se salga del alcance. –
Mismo comentario que la otra respuesta, debe manejar los contenedores asociativos de forma diferente. – Nim