X-Git-Url: https://git.llucax.com/z.facultad/75.29/susanita.git/blobdiff_plain/9d34215ecaec19da3d96f812c72f146c0e332a55..9e8e3ba3417b7d29636391e701ec505ff9aa0080:/src/persona.h?ds=sidebyside diff --git a/src/persona.h b/src/persona.h index f9ab912..6f44c88 100644 --- a/src/persona.h +++ b/src/persona.h @@ -27,9 +27,15 @@ struct Persona /// 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; + HashTable prefs_hash; /// 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 - 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();