X-Git-Url: https://git.llucax.com/z.facultad/75.29/susanita.git/blobdiff_plain/3ca0929e3a23301865a192e7cd4e6104724dc4f9..dfd0218b2eec273821401b2715f177b7b2de7a22:/src/susanita.cpp diff --git a/src/susanita.cpp b/src/susanita.cpp index a97a15e..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,19 +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() const +mostrar_estado(int mostrar_prios) const { - for (personas_type::const_iterator ih = hombres.begin(); + personas_type::const_iterator ih; + std::cout << "Personas\n"; + for (ih = hombres.begin(); ih != hombres.end(); ++ih) std::cout << **ih << "\n"; std::cout << "\n"; @@ -50,5 +69,31 @@ mostrar_estado() const im != mujeres.end(); ++im) std::cout << **im << "\n"; std::cout << "\n" << std::endl; + + if (mostrar_prios) + return; + + std::cout << "Prioridades\n"; + for (ih = hombres.begin(); + ih != hombres.end(); ++ih) { + Persona& h = **ih; + std::cout << h << "\n"; + for (personas_type::iterator im = h.prefs.begin(); + im != h.prefs.end(); ++im) { + Persona &p = **im; + std::cout << "\t" << p << "\n"; + } + } + std::cout << "\n"; + for (ih = mujeres.begin(); + ih != mujeres.end(); ++ih) { + Persona& h = **ih; + std::cout << h << "\n"; + for (personas_type::iterator im = h.prefs.begin(); + im != h.prefs.end(); ++im) { + Persona &p = **im; + std::cout << "\t" << p << "\n"; + } + } }