0

他の質問で学んだように、aと整数composite_keyを持つ構造体にaを使用できます。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;

問題は(もちろん)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 に答える