X-Git-Url: https://git.llucax.com/z.facultad/75.29/susanita.git/blobdiff_plain/66cdf3475e705e2cfffb466846939989e88ee951..08496388378e6399c127cf6c569f411add13e9a7:/src/susanita.cpp?ds=sidebyside diff --git a/src/susanita.cpp b/src/susanita.cpp index 17a601e..02a15cb 100644 --- a/src/susanita.cpp +++ b/src/susanita.cpp @@ -1,18 +1,37 @@ #include "susanita.h" #include #include +#include -Susanita::~Susanita() +Susanita:: +Susanita(size_type cap): + nombres(cap) +{ + capacidad = cap; +} + +// Uso interno +namespace +{ + /// Mata a una persona + void matar(Persona* p) + { + delete p; + } +} + +Susanita:: +~Susanita() { + std::for_each(hombres.begin(), hombres.end(), matar); + std::for_each(mujeres.begin(), mujeres.end(), matar); } void Susanita:: add_persona(Persona* pp) { - // XXX cual sería el problema que agregue una persona repetida? - // Reemplazaría a la anterior nomás - assert(nombres.find(pp->nombre) == nombres.end()); + assert(nombres[pp->nombre] == 0); // Muere si hay nombres repetidos nombres[pp->nombre] = pp; switch (pp->sexo) @@ -30,20 +49,18 @@ add_persona(Persona* pp) Persona* Susanita:: -get_persona(const std::string& nombre) const +get_persona(const std::string& nombre) { - nombres_type::const_iterator ip = nombres.find(nombre); - if (ip == nombres.end()) // No está - return 0; - return ip->second; + return (Persona *) nombres[nombre]; } void Susanita:: mostrar_estado(int mostrar_prios) const { + personas_type::const_iterator ih; std::cout << "Personas\n"; - for (personas_type::const_iterator ih = hombres.begin(); + for (ih = hombres.begin(); ih != hombres.end(); ++ih) std::cout << **ih << "\n"; std::cout << "\n"; @@ -56,7 +73,7 @@ mostrar_estado(int mostrar_prios) const return; std::cout << "Prioridades\n"; - for (personas_type::const_iterator ih = hombres.begin(); + for (ih = hombres.begin(); ih != hombres.end(); ++ih) { Persona& h = **ih; std::cout << h << "\n"; @@ -67,7 +84,7 @@ mostrar_estado(int mostrar_prios) const } } std::cout << "\n"; - for (personas_type::const_iterator ih = mujeres.begin(); + for (ih = mujeres.begin(); ih != mujeres.end(); ++ih) { Persona& h = **ih; std::cout << h << "\n";