Impulsionar Multi-Index: chave composta de vetor e int para índices hash
-
19-09-2019 - |
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?
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.