2016-04-15 9 views
1

私は検索して、マルチマップを使用して同等のキーのセットを異なる値にマップできることを発見しました。私はその逆をする方法が不思議ですか?それは異なるキーを同じ値にマップすることですか?そのためのstlデータ構造はありますか?異なるキーをC++の同じ値にマッピング

+0

'map'では値が一意である必要はありません。ちょうどキー。 – cHao

+1

値がキーになるようにマップを反転してください。 –

答えて

0

複数のキーが同じ値にマップされるようにstd::mapを設定できます。そこには何もありません。しかし、おそらくあなたが探しているのは、マップ全体を反復することなく、指定された値にマップするすべてのキーを見つける能力です。そのようなデータ構造はないと思います。

+0

@Sahu Yea実際には、次のようなマップを作成しました:std :: map > 、std :: string> m。問題は、このマップmに存在するペアエントリを与えると、その値のために何も出力しないということです。ここで何が間違っているのでしょうか?重複した値があり、マップが1対1の対応しか許していない可能性があると私は考えました。それが私がこれを投稿した理由です。どんな助けでも感謝します。 – slin6174

+0

@ dl23linの場合は、この質問を削除して、試したコード、見たいもの、実際に見ているコードを別の質問で尋ねる必要があります。それはこの質問よりも役に立つでしょう。 –

3

通常はstd::map(またはstd::unordered_map)です。あなたはそれを行う方法には、いくつかの選択肢があります:あなたが必要

  • 通常のキーと値のストアとして値をコピー

    • 通常のキーと値のストアを、その値は、実際のデータへのポインタである場合それは、必要に応じて(それはおそらく、それは価値があるよりも多くのトラブルこれを処理するのですけれども、私は本当にお勧め何を)キーを収集しないように構造のいくつかの種類(おそらくstd::tuple)を使用しstd::shared_ptr
    • を使用して、共有することができ
    • 使用Boost multi-index containers

    Boostを使用すると、すぐに使用できるソリューションがあります。プロジェクトでBoostを既に使用している場合(これはライブラリの大きなセットであり、標準ライブラリを補完しています)、私はそれを選ぶのが簡単だと思いますその解決策。

  • 関連する問題