]> git.llucax.com Git - z.facultad/75.29/susanita.git/blob - src/hashtable.h
Agregar la capacidad como un atributo de Susanita.
[z.facultad/75.29/susanita.git] / src / hashtable.h
1 #ifndef _HASHTABLE_H_
2 #define _HASHTABLE_H_
3
4 #include <utility>
5 #include <vector>
6 #include <string>
7 #include <list>
8
9 /// Tabla Hash (abierta)
10 struct HashTable
11 {
12
13         /// Tipo de dato para almacenar los pares clave, valor
14         typedef std::pair< std::string, void * > pair_type;
15
16         /// Tipo de dato para almacenar una lista de pares
17         typedef std::list< pair_type > list_type;
18
19         /// Tipo de dato para almacenar los pares
20         typedef std::vector< list_type > table_type;
21
22         /// Tipo de dato del tamaño del contenedor
23         typedef table_type::size_type size_type;
24
25         /// Constructor
26         HashTable(size_type size);
27
28         /// Función de hash
29         size_type hash(const std::string& val);
30
31         /// Agrega entrada
32         void *& operator[](const std::string& key);
33
34         protected:
35
36         /// Contenedor usado para implementar la tabla hash
37         table_type table;
38
39 };
40
41 #endif // _HASHTABLE_H_