Pregunta

como acabo aprendido en en mi otra pregunta , que podría utilizar un composite_key para una estructura, que tiene una std::vector y un entero. Ahora mi pregunta es: ¿Puedo usar esto de alguna manera de trabajar con hashed_indecies

Aquí un ejemplo similar al ESTA :

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;

El problema es (por supuesto) que un std::vector<int> es no-clave hash adecuado. ¿Puedo poner este código en una envoltura elegante (o algo así), para producir una clave hash de cada entrada de my_vec así?

¿Fue útil?

Solución

Uso fragmento de código desde su sugerencia aquí . Deberia de funcionar. He añadido mis comentarios allí.

Otros consejos

Si desea vector que se hashable, sólo puede escribir una función hash<vector<int> > en namespace std, por lo que es el hash sin embargo, por favor (pista: es posible que pueda salirse con hash solamente los primeros elementos en algunas aplicaciones). Esto debería hacer el trabajo std::hash_set<vector<int> >, y creo que su contenedor más complejo también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top