0

正如我刚刚在另一个问题中了解到的那样,我可以将 acomposite_key用于具有 astd::vector和整数的结构。现在我的问题是:我可以以某种方式使用它来处理 hashed_indecies 吗?

这里有一个类似于THIS的示例:

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;

问题是(当然) astd::vector<int>不是合适的哈希键。我可以把这段代码放在一个优雅的包装器(或类似的东西)中,以便从每个条目中生成一个哈希键my_vec吗?

4

2 回答 2

0

在此处使用您的建议中的代码片段。它应该工作。我在那里添加了我的评论。

于 2009-11-09T14:25:04.110 回答
0

如果你希望向量是可散列的,你可以在 中写一个hash<vector<int> >函数namespace std,让它随心所欲地散列(提示:在某些应用程序中,你可能只对前几个元素进行散列)。这应该可以std::hash_set<vector<int> >工作,我认为你的更复杂的容器也是如此。

于 2009-11-09T14:42:55.783 回答