Este seria un caso muy directo:
#include "iostream"
#include "boost/functional/hash.hpp"
int main()
{
boost::hash string_hash;
size_t myHash = string_hash("Hola mundo");
std::cout << "Mi hash es " << myHash << std::endl;
return EXIT_SUCCESS;
}
Tambien se puede lo deberiamos usar para indexar maps. Imagina que tenemos una funcion que recibe un directorio y un objeto de una clase T, y que eso lo guardamos en un std::map. Los directorios son del tipo "c:\archivos de programas\bla bla bla\jejeje\archivo". Si te fijas, cuando se empieza a comparar la función, los 15 primeros carácteres son siempre iguales, asi que podemos perder ciclos comparando. Lo que podemos hacer es, al insertar el objeto T, calcular el hash del directorio y devolver el hash como ID. Asi nuestros accesos posteriores seran rapidisimos.
std::size_t insert( const std::string& dir, T& objeto)
{
std::size_t hash = string_hash(dir);
myMap[hash] = objeto;
return hash;
}
Ahora podriamos recuperar el objeto facilmente con el ID (no controlamos los errores).
T& get(const std::size_t id)
{
return myMap[id];
}
Nota: He incluido las cabeceras como #include "iostream" por un tema del plugin de blogger, que me formatea mal el código, pero lo puedes poner como quieras.

No hay comentarios:
Publicar un comentario