Pergunta

como eu acabou de aprender na na minha outra pergunta , eu poderia usar um composite_key para uma estrutura, que tem uma std::vector e um número inteiro. Agora a minha pergunta é: Posso usar isso de alguma forma para trabalhar com hashed_indecies

Aqui um exemplo semelhante ao ESTE :

struct unique_property
{
  //the pair of int and std::vector<int> shall be unique
  int my_int;
  std::vector<int>  my_vec;
};

typedef multi_index_container<
  unique_property,
  indexed_by<
    hashed_unique< // indexed by my_int and every entry of my_vec
      composite_key<
        street_entry,
        member<unique_property,int,&unique_property::my_int>,
        member<unique_property,std::vector<int>,&unique_property::my_vec>
      >
    >,
    random_access< >
  >
> property_locator;

O problema é (claro) que um std::vector<int> há mistura-chave apropriada. Posso colocar esse código em um invólucro elegante (ou algo parecido), para produzir um hash-chave de cada entrada de my_vec bem?

Foi útil?

Solução

Use trecho de código a partir de sua sugestão aqui . Ele deve funcionar. Eu adicionei meus comentários lá.

Outras dicas

Se você quiser vector ser Hashable, você pode apenas escrever uma função hash<vector<int> > em namespace std, tornando-se de hash como desejar (dica: você pode ser capaz de fugir com hash única os primeiros elementos em algumas aplicações). Isso deve tornar o trabalho std::hash_set<vector<int> >, e acho que o recipiente mais complexos também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top