web-dev-qa-db-ja.com

「マルチセット」と「マルチマップ」-ポイントは何ですか?

質問が述べているように...私は multisets / multimaps についてのポイントを取得していません。

それで、目的は何ですか?

36

いくつかのユースケース:

マルチマップ

  • 郵便番号をキーとして、その郵便番号を持っているすべての人
  • アカウントIDをキーとして、その人/アカウントのすべての未処理の注文
  • キーワードごとにさまざまな説明が付いた辞書

マルチセット

本質的には、キーと整数カウントを持つマップです。

  • ショップの在庫、すべての製品にはキーがあり、まだ利用可能な量は価値です
  • ショップの累積販売データ。商品が販売されるたびに、商品IDがマルチセットに追加され、販売量が増加します。
37
extraneon

ほとんどの場合、キーが一意であるが、そうでない場合もある状況が発生した場合に、マルチマップが役立つ1つの例。

たとえば、ハッシュをキーとして使用するキャッシュクラスを作成している場合です。ほとんどの場合、2つの異なるオブジェクトは同じハッシュを持たないため、キーは一意になります。ただし、さまざまなオブジェクトでハッシュの衝突が発生する可能性があるため、その状況をカバーするマルチマップが必要になります。

もう1つの例は、(データベースのように)あらゆる種類の一意でないインデックスです。

マルチセットに関しては、それらはあまり役に立たないと思います。私が考えることができるのは、それを一種の自動的にソートされたリストとして使用することだけです。

2
Eric Petroelje

マルチセットまたはマルチマップは、特定のアイテムが複数存在する可能性がある状況向けです。たとえば、本のインデックスを作成したいとします。テキストをスキャンして、本当に一般的な意味のない単語( "a"、 "an"、 "the"など)をすべて捨ててから、残りのすべてのリストと、それぞれが本の中でどこにあるかをリストします。発生した。

かなりの数の単語が複数のページに表示されます。その場合、1つの単語から別のページにマッピングする複数のエントリがあります。これを処理する1つの方法は、単語からページ番号へのマルチマップです。

2
Jerry Coffin

http://www.cplusplus.com/reference/stl/multimap/

マップは、マップコンテナと同様に、キー値とマップされた値の組み合わせによって形成された要素を格納する一種の連想コンテナですが、異なる要素が同じキー値を持つことができます。

これは、要素がキーを共有できる一種のレジストリです。あなたは会社と従業員について考えることができます。番地が鍵であり、従業員が価値観です。

1
Andrey

ツリーのような構造を使用する場合は、マルチマップを使用します。

0
Eric

ベクトル/リスト(またはその他のコンテナー)に対してマルチセットを使用することの最も重要な利点は、検索操作の時間計算量です。マルチセットの平均ケース時間計算量はO(logn)であり、unordered_multisetはO(1)です。マルチマップとordered_multimapについても同じことが言えます。

0
Mohammed Habib

これが ウィキペディア の使用法について述べています:

  • 学生が複数のクラスに同時に登録される可能性がある学生登録システムでは、キーが学生IDであり、値がコースIDである、コースへの学生の登録ごとに関連付けが存在する場合があります。学生が3つのコースに登録されている場合、同じキーを含む3つのアソシエーションがあります。
  • 本の索引は、所与の索引用語について任意の数の参照を報告することができ、したがって、索引用語から任意の数の参照場所へのマルチマップとしてコード化することができる。
0
unwind