1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Hash_set em c++

Discussão em 'Programação' iniciada por Couve, 3 de Junho de 2008. (Respostas: 1; Visualizações: 553)

  1. Couve

    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
     
  2. OubeLa

    OubeLa Power Member

    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
     

Partilhar esta Página