X-Git-Url: https://git.llucax.com/z.facultad/75.29/susanita.git/blobdiff_plain/66cdf3475e705e2cfffb466846939989e88ee951..dfd0218b2eec273821401b2715f177b7b2de7a22:/src/susanita.cpp diff --git a/src/susanita.cpp b/src/susanita.cpp index 17a601e..fff9fef 100644 --- a/src/susanita.cpp +++ b/src/susanita.cpp @@ -1,9 +1,29 @@ #include "susanita.h" #include #include +#include -Susanita::~Susanita() +Susanita:: +Susanita(size_type capacidad): + nombres(capacidad) +{ +} + +// 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 @@ -12,7 +32,7 @@ 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 +50,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 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 +74,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 +85,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";