Hash_set em c++

Couve

Power Member
Como é que usam hash_set's em c++?

Ou seja vamos supor que eu tenho:

typedef hash_set<Assinante,HAssin,IgAssin> HTAssinante; //Assinante é uma classe.

Se me pedem para implementar as funções de dispersão e igualdade como tenho de fazer? Eu percebo a teoria, mas na pratica, como é o codido disto? Qual a sintaxe?

Ps. Comparar assinantes é comparar um campo, que tem o seu telefone.

Cumprimentos
 
Vê isto:http://www.techzonept.com/showthread.php?t=215655&highlight=hash

Depois acabei por resolver da seguinte forma: na classe Cantina, coloquei isto.

Código:
//função da hash_set de trabalhadores
namespace stdext {
    size_t hash_value( const Trabalhador& tr )
    {
        return hash_value(tr.getCodigo());
    }
}

//operador de comparação menor, necessário para inserir trabalhadores na hash_set
bool operator < (const Trabalhador& tr1, const Trabalhador& tr2)
{
    if (tr1.getCodigo() < tr2.getCodigo())
        return true;

    else
        return false;
}
Ou seja, parece-me que tens de ter algo que identifique um trabalhador...tipo, uma codigo ou assim. Ou então, se calhar, podes fazer o overloading do operator != sendo que comparas, por exemplo, o numero de telefone. Eu implementei isto em MS Visual Studio, noutros compiladores acho que é ligeiramente diferente...Tenta ver aqui: http://paginas.fe.up.pt/~arocha/aed0708.html , na aula 12 (tabelas de dispersão). vê o exercicio, e a resolução.

Cumprimentos
 
Back
Topo