key_typeとmapped_typeを持つstd::mapがあります。マップされたタイプのすべてのインスタンスは、3つの異なるキー値の下で3つのコピーとしてマップに挿入されます。これにより、3つのキーのいずれかに基づいて値を取得できます。
ただし、欠点は、アイテムを削除するときに、3つのコピーすべてを削除するために、1つではなく3つのキーを探す必要があることです。
厳密な弱順序を維持しながら、3つのキーを1つのクラスに構成し、そのようなオブジェクトを1つのキーと比較することは可能ですか?このようなシナリオでは、operator <はkey_typeに対してどのように見えますか?
編集:3つのキーは同じタイプです。たとえば、1つのレコードに3つの異なる整数値でアクセスできます(これらのキー値は他のレコードでは使用されません)。したがって、私が理解していることから、Boost.MultiIndexはこの問題の解決策ではありません。