Повысить мультииндексность :Составной ключ vector и int для хэшированных индексов

StackOverflow https://stackoverflow.com/questions/1701022

  •  19-09-2019
  •  | 
  •  

Вопрос

как я только что узнал в в моем другом вопросе, Я мог бы использовать composite_key для структуры, которая имеет std::vector и целое число.Теперь мой вопрос заключается в следующем:Могу ли я как-то использовать это для работы с hashed_indecies?

Вот пример, подобный ЭТО:

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;

Проблема в том (конечно), что std::vector<int> нет подходящего хэш-ключа.Могу ли я поместить этот код в элегантную оболочку (или что-то в этом роде), чтобы создать хэш-ключ из каждой записи my_vec также?

Это было полезно?

Решение

Используйте фрагмент кода из вашего предложения здесь.Это должно сработать.Я добавил туда свои комментарии.

Другие советы

Если вы хотите, чтобы вектор был хэшируемым, вы можете просто написать hash<vector<int> > функция в namespace std, делая его хэшем , как вам заблагорассудится (подсказка:возможно, вам удастся избежать хеширования только первых нескольких элементов в некоторых приложениях).Это должно сделать std::hash_set<vector<int> > работайте, и я думаю, что ваш более сложный контейнер тоже.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top