1

プロジェクトに次のデータ構造を実装する必要があります。の関係があります

const MyClass* 

uint64_t

すべてのポインターに対して、それに接続されたカウンターを保存します。これは、時間の経過とともに変更できます (実際にはインクリメントのみ)。これは問題ありません。単純に std::map に格納できます。問題は、最も高い値を持つポインターにすばやくアクセスする必要があることです。

これが、boost::bimap を使用するという結論に達した理由です。私のプロジェクトでは次のように定義されています。

typedef boost::bimaps::bimap<
        boost::bimaps::unordered_set_of< const MyClass* >,
        boost::bimaps::multiset_of< uint64_t, std::greater<uint64_t> >
> MyBimap;
MyBimap bimap;

これは問題なく動作しますが、一度挿入されたペアの uint64_t を変更できないというのは正しいですか? ドキュメントによると、multiset_of は一定であるため、bimap でペアの値を変更することはできません。

私に何ができる?このバイマップの 1 つのキーの値を変更する正しい方法は何ですか? または、この問題に対して可能な単純なデータ構造はありますか?

4

1 に答える 1