3

ハッシュテーブルから単一の値を格納および取得するには、複数のキー(int型)を使用する必要があります。複数のキーを使用して、単一のアイテムにインデックスを付けます。高速挿入が必要で、ハッシュテーブルを検索します。ちなみに、実装でBoostライブラリを使用することは許可されていません。

どうすればそれができますか?

4

4 に答える 4

4

2つのintが1つのキーを形成することを意味する場合は、unordered_map<std::pair<int,int>, value_type>。同じデータセットを複数のキーでインデックス付けする場合は、Boost.MultiIndexを参照してください。

于 2010-09-25T17:39:21.150 に答える
2

コンテナのキーが複数の の組み合わせで構成されている場合は、boost::tupleintをキーとして使用して、追加の作業なしで をカプセル化できます。これは、主要なサブコンポーネントの数が固定されていれば保持されます。intint

于 2010-09-25T17:46:37.070 に答える
1

最も簡単な方法は、おそらくリスト内の要素へのポインタ/インデックスのマップを保持することです。

ここではさらにいくつかの詳細が必要ですが、削除をサポートする必要がありますか?要素はどのように設定されていますか?boost :: sharedポインターを使用できますか?(削除をサポートする必要がある場合はかなり役立ちます)

この場合の値オブジェクトは大きいか、通常のマップで値を単純に複製できない他の理由があると思います。

于 2010-09-25T17:35:53.610 に答える
0

常に検索の組み合わせになる場合。

次に、複数のキーを使用して単一の複合キーを作成することをお勧めします。

あなたはどちらかを行うことができます

  1. 次のようなintの連結文字列としてキーを格納する

     (int1,int2,int3) => data
    
  2. uint64_tのようなより高いデータ型を使用します。uでは個々の値を追加してキーを形成できます

    // Refer comment below for the approach
    
于 2010-09-25T19:14:04.033 に答える