Posts Tagged ‘QHash’

Tablas Hash multivalores en Qt

marzo 15, 2010

Tablas Hash

Una tabla hash es una estructura de datos que asocia llaves o claves con valores. Almacena pares (llave, valor) y proporciona una búsqueda muy rápida del valor asociado a una llave.

Supongamos que queremos tener una tabla hash que contenga una lista de alumnos con sus respectivas edades. En Qt podemos utilizar la clase QHash para crear una tabla hash de la siguiente forma:

QHash<QString, int> alumnos;

Con la instrucción anterior creamos una tabla hash llamada alumnos en donde la llave es de tipo QString (para almacenar el nombre del alumno) y el valor es de tipo entero (para almacenar la edad del alumno).  Para almacenar la información en la tabla hash llamada alumnos que acabamos de crear podemos usar algo como:


alumnos.insert(“Juan”, 20);
alumnos.insert(“Laura”, 22);
alumnos.insert(“Pedro”, 21);

Si queremos almacenar la edad de Laura en una variable llamada edad_laura, utilizamos la siguiente instrucción:

int edad_laura = alumnos.value(“Laura”);

Tablas Hash multivalores

Son tablas hash que permiten almacenar múltiples valores con la misma llave.

Supongamos que queremos almacenar en una estructura, los números de matrícula de todos los alumnos que están inscritos en una materia determinada. En Qt podemos hacerlo con la instrucción siguiente:

QMultiHash<QString, int> inscritos;

Con la instrucción anterior creamos una tabla hash multivalores llamada inscritos en donde la llave es de tipo QString (para almacenar el nombre de la materia) y el valor es de tipo entero (para almacenar el número de matrícula del alumno).  Para almacenar la información podemos usar algo como:

inscritos.insert(“Software Libre 1”, 456);
inscritos.insert(“Software Libre 1”, 924);
inscritos.insert(“Primeros pasos en GNU/Linux”, 621);
inscritos.insert(“Software Libre 1”, 285);
inscritos.insert(“Primeros pasos en GNU/Linux”, 456);

Si queremos recuperar los números de matrícula de todos los alumnos inscritos en la materia Software Libre 1, podemos usar la función values, que regresa una lista que podemos almacenar en un objeto de tipo QList para poder recorrerla posteriormente.

Qlist<int> matriculas_sl = inscritos.values(“Software Libre 1”);

Anuncios