Impulsar Multi-Index: Clave múltiple del vector y la int para los índices hash
-
19-09-2019 - |
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í?
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.