[解決済み] マルチマップはベクトルマップに比べて何が優れているのですか?
2023-06-02 02:09:24
質問
ベクターのマップや集合のマップが作れるのに、なぜマルチマップが存在するのか理解できません。 私にとっては、唯一の相違点です。
-
を使っていること
equal_range
マルチマップではキーの要素を取得するために、ベクターのマップでは単純に[]
演算子を使い、要素のベクトルを得ることができます。 -
を使って
multimap.insert(make_pair(key,value))
を使用して、マルチマップに要素を追加しmap_of_vectors[key].push_back(value)
はベクターのマップにおいて
では、なぜmultimapを使うのでしょうか?私にとっては、キーのすべての値を取得するために2つのイテレータを持つよりも、ベクトルを持つ方が良いのです。
この質問はunordered_map of vectorsとunordered_multimapにも当てはまります。
どのように解決するのですか?
同じキーを持つすべての値が、対処したい関係性を持っているかどうかによると思います。
例えば、キー X を持つすべての要素を頻繁に調べたり、関数に渡したりするのでしょうか。それなら、すでに別のコンテナに入っていて、直接アドレス指定できるほうが便利です。
しかし、同じキー値を共有するかしないかのアイテムのコレクションを持っているだけなら、なぜその間にベクトルを使うのでしょうか?マップとベクターのケースのためにネストされたfor-loopを持つよりも、イテレータでマルチマップを実行する方が便利なのです。
別の見方もあります。キーごとに複数のエントリーが非常に一般的である場合、その構造はマップ、ベクターのケースでより効率的です。
別の見方をすると、キーごとの複数エントリーが非常に一般的であれば、構造体はマップ、ベクトルのケースでより効率的です。
関連
-
[解決済み] テスト
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] 些細なキーの場合、unordered_mapよりもmapを使用する利点はありますか?
-
[解決済み] std::mapの反復処理の順番は既知(規格で保証されている)ですか?
-
[解決済み] vector::at vs. vector::operator[].
-
[解決済み] なぜstd::stackはデフォルトでstd::dequeを使うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み] std::multimap<key, value> と std::map<key, std::set<value> > の違いは何ですか?