]> git.llucax.com Git - z.facultad/75.29/susanita.git/blobdiff - src/susanita.h
Hacer que todos_h_comprometidos() sea O(1).
[z.facultad/75.29/susanita.git] / src / susanita.h
index b677b828823d004ac2409873c118be6087974931..5bff3fb318f19add3fde50dc60fd7e602d24cd6d 100644 (file)
@@ -2,7 +2,7 @@
 #define _SUSANITA_H_
 
 #include "persona.h"
-#include <map>
+#include "hashtable.h"
 #include <deque>
 #include <string>
 
 struct Susanita
 {
 
-       /// Tipos
+       /// Tipo de dato para guardar lista de personas
        typedef std::deque< Persona* > personas_type;
 
+       /// Tipo de dato de la cantidad de personas que puede tener
+       typedef HashTable::size_type size_type;
+
+       /// Constructor
+       Susanita(size_type capacidad);
+
        /// Destructor
        virtual ~Susanita();
 
@@ -20,7 +26,10 @@ struct Susanita
        virtual void add_persona(Persona* p);
 
        /// Obtiene una persona
-       virtual Persona* get_persona(const std::string& p) const;
+       virtual Persona* get_persona(const std::string& p);
+
+       /// Muestra estados
+       virtual void mostrar_estado(int mostrar_prios = 0) const;
 
        /// Empieza a emparejar gente
        virtual void casamentear() = 0;
@@ -31,16 +40,18 @@ struct Susanita
        /// Lista de mujeres
        personas_type mujeres;
 
+       /// Cantidad de personas que puede tener
+       size_type capacidad;
+
+
        protected:
+
        /// Tipos
-       typedef std::map< std::string, Persona* > nombres_type;
+       typedef HashTable nombres_type;
 
        /// Mapa de gente, relaciona nombres con objetos
        nombres_type nombres;
 
-       /// Muestra estados
-       void mostrar_estado() const;
-
 };
 
 #endif // _SUSANITA_H_