Question

comme je viens d'apprendre en dans mon autre question , je pourrais utiliser un composite_key pour une structure, qui a une std::vector et un nombre entier. Maintenant, ma question est: Puis-je utiliser une certaine façon de travailler avec hashed_indecies

Voici un exemple similaire à CE :

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;

Le problème est (bien sûr) qu'un std::vector<int> est pas hachage-clé appropriée. Puis-je mettre ce code dans un emballage élégant (ou quelque chose comme ça), pour produire un hachage clé de chaque entrée de my_vec ainsi?

Était-ce utile?

La solution

Utilisez extrait de code de votre suggestion . Il devrait fonctionner. J'ai ajouté mes commentaires là-bas.

Autres conseils

Si vous voulez vecteur à hashable, vous pouvez simplement écrire une fonction hash<vector<int> > dans namespace std, ce qui en fait cependant vous hachage s'il vous plaît (indice: vous pourriez être en mesure de sortir avec hachant que les premiers éléments dans certaines applications). Cela devrait rendre le travail de std::hash_set<vector<int> >, et je pense que votre conteneur plus complexe aussi bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top