Domanda

come ho appena imparato a nella mia altra domanda , potrei usare un composite_key per una struttura, che ha una std::vector e un intero. Ora la mia domanda è:? Posso usare questo in qualche modo di lavorare con hashed_indecies

Ecco un esempio simile a QUESTO :

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;

Il problema è (ovviamente) che un std::vector<int> non è hash-chiave adatta. Posso inserire questo codice in un elegante involucro (o qualcosa di simile), per produrre un hash-chiave da ogni ingresso di my_vec così?

È stato utile?

Soluzione

Usa frammento di codice dal vostro suggerimento qui . Dovrebbe funzionare. Ho aggiunto i miei commenti lì.

Altri suggerimenti

Se si desidera vettore sia hashable, si può semplicemente scrivere una funzione hash<vector<int> > in namespace std, il che rende hash però per favore (suggerimento: si potrebbe essere in grado di cavarsela con hashing solo i primi elementi in alcune applicazioni). Questo dovrebbe rendere il lavoro std::hash_set<vector<int> >, e penso che il vostro contenitore più complesso pure.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top