「マルチセット」と「マルチマップ」 - ポイントは何ですか?
-
27-09-2019 - |
解決
いくつかのユースケース:
マルチマップ
- 郵便番号をキーとして、その郵便番号を持っているすべての人
- アカウントIDをキーとして、その人/アカウントのすべてのオープン注文
- キーワードごとのさまざまな説明を含む辞書
マルチセット
本質的には、キーと整数カウントを備えたマップです。
- ショップの在庫、すべての製品にはキーがあり、利用可能な金額は価値です
- 商品が販売されるたびに、製品IDがマルチセットに追加され、販売量を増やすために、ショップの累積販売データ
他のヒント
ほとんどの場合、キーがユニークであるが、そうでない状況がある場合にマルチマップが役立つ1つの例が役立ちます。
たとえば、キーとしてハッシュを使用したキャッシュクラスを作成している場合。ほとんどの場合、2つの異なるオブジェクトには同じハッシュがないため、キーは一意になります。しかし、さまざまなオブジェクトのハッシュ衝突が発生する可能性があるため、マルチマップがその状況をカバーする必要があります。
別の例は、任意の種類の非ユニークインデックスです(データベースのように)。
マルチセットに関しては、それらはあまり役に立たないと思います。私が考えることができる唯一のことは、それを一種の自動化されたリストとして使用することです。
マルチセットまたはマルチマップは、単に特定のアイテムを複数ある可能性がある状況向けです。たとえば、本のインデックスを作成したいとしましょう。テキストをスキャンし、本当に一般的な意味のない単語( "a"、 "an"、 "など)をすべて捨ててから、残りのすべてのリストを作成し、それぞれの本の場所を作成します。発生した。
かなりの数の単語が複数のページに表示されます。その場合、ある単語から異なるページに複数のエントリをマッピングすることができます。それを処理する1つの方法は、単語からページ番号へのマルチマップです。
http://www.cplusplus.com/reference/stl/multimap/
マップは、マップコンテナと同様に、キー値とマップ値の組み合わせによって形成された要素を保存する一種の連想コンテナですが、異なる要素が同じキー値を持つことができるようにします。
要素がキーを共有できるレジストリのようなものです。企業や従業員のことを考えることができます。路上住所は鍵であり、従業員は価値です。
これが何ですか ウィキペディア 使用について言う:
- 学生が複数のクラスに同時に登録される可能性がある学生登録システムでは、コースに学生が登録する各登録に対して関連がある場合があります。キーは学生IDで、値はコースIDです。学生が3つのコースに登録されている場合、同じキーを含む3つの協会があります。
- 本のインデックスは、特定のインデックス期間の任意の数の参照を報告する場合があり、したがって、インデックス項から任意の数の参照位置へのマルチマップとしてコード化される場合があります
木の種類の構造を使用する場所では、マルチマップを使用します。
ベクトル/リスト(またはその他のコンテナ)でマルチセットを使用することの最も重要な利点は、検索操作の時間の複雑さです。マルチセットの平均ケース時間の複雑さはO(logn)であり、odered_multisetはo(1)です。 MultimapとOrdered_multimapにも同じことが当てはまります。