]> git.llucax.com Git - z.facultad/75.29/susanita.git/blobdiff - src/persona.h
Termina informe.
[z.facultad/75.29/susanita.git] / src / persona.h
index f9ab9121c433c050e29611836d2a08417cdba612..6f44c887c5126eacd6b15b76e8a593c23c88752f 100644 (file)
@@ -27,9 +27,15 @@ struct Persona
        /// Nombre de la persona, sólo con fines de representación
        std::string nombre;
 
        /// Nombre de la persona, sólo con fines de representación
        std::string nombre;
 
-       /// Lista de personas que prefiere, la primera de la lista es la
-       /// que mejor posicionada esta
+       /// Para la lista de personas que prefiere usamos dos estructuras: la
+       /// primera es una lista en donde el primer elemento es la persona
+       /// mejor posicionada; la segunda es un hash indexado por el nombre de
+       /// la persona, y como valor la posicion numerica.
+       /// Esta dualidad nos permite tener iteracion en orden, O(1) en
+       /// encontrar el mejor, y O(1) en ver quien es el preferido entre dos
+       /// personas.
        prefs_type prefs;
        prefs_type prefs;
+       HashTable<int> prefs_hash;
 
        /// Estado de la persona
        estado_type estado;
 
        /// Estado de la persona
        estado_type estado;
@@ -47,7 +53,7 @@ struct Persona
        rechazos_type rechazos;
 
        /// Función de comparación entre dos personas según nuestras prefs
        rechazos_type rechazos;
 
        /// Función de comparación entre dos personas según nuestras prefs
-       bool cmp(const Persona& p1, const Persona& p2) const;
+       int cmp(const Persona& p1, const Persona& p2) const;
 
        /// Ordenamos las ofertas según nuestras preferencias
        void ordenar_ofertas();
 
        /// Ordenamos las ofertas según nuestras preferencias
        void ordenar_ofertas();